2016-05-24 9 views
0

in Google-Skript Ich versuche, eine % Zeichenfolge basierend auf dem Zeichen nach ihm zu ersetzen.Ersetzen Zeichenfolge mit Bedingung in Google-Skript

Ich habe versucht mit:

var indexOfPercent = newString.indexOf("%"); 

und prüfen Sie dann den Charakter indexOfPercent+1, aber indexOf kehrt nur das erste Vorkommen von ‚%‘.

Wie kann ich alle Vorkommen erhalten? Vielleicht gibt es einen einfacheren Weg (reguläre Ausdrücke)?


EDIT:

Schließlich möchte ich alle meine % Vorkommnisse %% ersetzen, aber nicht, wenn Prozentzeichen war Teil der %@ oder %@.

Fazit: mein string: Test%@ Test2%s Test3%%.

Ich habe versucht, mit so etwas wie diesem:

//?!n Matches any string that is not followed by a specific string n 
    //(x|y) Find any of the alternatives specified 
    var newString = newString.replace(\%?![s]|\%?![%], "%%") 

aber es konnte keine Saiten Test%@ Test2%s Test3%. aussehen soll. Ich kenne Regex nicht, also ist es vielleicht ein einfacher Fehler.

Dank

Antwort

1

diesen Code Versuchen:

// replace all '%' 
var StrPercent = '%100%ffff%'; 
var StrNoPersent = StrPercent.replace(/\%/g,''); 
Logger.log(StrNoPersent); // 100ffff 

Suchen Sie nach more info here


bearbeiten

In Ihrem Fall, dass Sie mit dem Charakter REGEX brauchen nicht von der Gruppe gefolgt von Charakteren. Similiar Frage wurde hier gefragt:

Regular expressions - how to match the character '<' not followed by ('a' or 'em' or 'strong')?

Thy diesen Code:

function RegexNotFollowedBy() { 

var sample = ['Test%@', 
       'Test2%s', 
       'Test3%', 
       '%Test4%']; 

var RegEx = /%(?!s|@)/g; 
var Replace = "%%"; 

var str, newStr; 

    for (var i = 0; i < sample.length; i++) { 
     str = sample[i]; 
     newStr = str.replace(RegEx, Replace); 
     Logger.log(newStr); 

    } 

} 

I Ausdruck erklären werde /%(?!s|@)/g:

  • % - schauen '%'
  • (text1|text2|text3...|textN) - nicht gefolgt von text1, 2 usw.
  • g - suchen Sie nach der Richtigkeit des gesuchten Textes
+0

Vielen Dank. Es hat das Problem gelöst, alle Vorkommen von% -Zeichen zu finden, aber ich möchte trotzdem den regulären Ausdruck verwenden, um die Bedingung des folgenden Zeichens zu überprüfen. Siehe die Änderung. – izik461

+0

Ich habe die Antwort hinzugefügt. –

+0

Jetzt funktioniert es perfekt! Vielen Dank! – izik461

Verwandte Themen