2017-09-18 1 views
0

in Java Ich muss eine Zahl durch ein Wort nur ersetzen, wenn es nicht durch das "+" vorangestellt ist. Beispiel:Ersetzen Sie das Zeichen, wenn nicht vorangestellt "+"

- match1 
- match+1 

Sollte sich:

matchone 
match+1 (no modify) 

Ich habe versucht, mit

>>>name = name.replaceAll("([^+])1", "one"); 
matcone          //required "matchone" 

Aber es funktioniert nicht. Irgendwelche Vorschläge?

Danke

+0

Ist die Forderung nur Nummer ersetzen ‚1‘? Ihre Frage wird nicht angegeben, aber Ihre Regex schlägt etwas anderes vor. –

+0

ja ich brauche nur die "1" zu ersetzen – Pecana

+1

Sie müssen angeben, was Sie mit "Aber es funktioniert nicht". Was ist die Ausgabe, die Sie erhalten, und was ist die Ausgabe, die Sie erwartet haben? –

Antwort

5

Verwenden Sie ein negatives Lookbehind:

name = name.replaceAll("(?<!\\+)1", "one"); 
+0

Sie meinen: "Look-Behind" – laune

+0

Dies gibt eine "Illegal Escape-Zeichen in String Literal" :-( – Pecana

+0

Dies funktioniert perfekt! Vielen Dank! – Pecana

1

Ihre regex das Zeichen vor dem man essen und zu ersetzen, dass mit „Eins“ als auch, so dass der Ausgang in der ersten Instanz ist " matcone ".

Sie können einen negativen Blick hinter Ausdruck (?<!) Verwendung von „1“ entsprechen, die nicht durch ein „+“ vorangestellt ist:

name = name.replaceAll("(?<!\\+)1", "one"); 
Verwandte Themen