Wie lautet der korrekte Ausdruck für ein Pluszeichen (+) als erstes Argument (d. H. Der zu ersetzende String) für die replaceAll
-Methode von Java in der String-Klasse? Ich kann die Syntax nicht richtig verstehen.
Sie müssen den +
für den regulären Ausdruck mit \
entgehen.
Java verwendet jedoch einen String-Parameter, um reguläre Ausdrücke zu erstellen, die \
für seine eigenen Escape-Sequenzen verwenden. Sie müssen also den \
selbst entziehen:
"\\+"
lassen Sie Java im Zweifelsfall die Arbeit für Sie erledigen:
myStr.replaceAll(Pattern.quote("+"), replaceStr);
Sie müssen das + mit einem Escapezeichen versehen, und da\in Java-Zeichenfolgen selbst ein Sonderzeichen ist, müssen Sie es mit einem anderen\abschließen.
Daher wird Ihre Regex-Zeichenfolge im Java-Code als "\\ +" definiert.
Das heißt dieses Beispiel:
String test = "ABCD+EFGH";
test = test.replaceAll("\\+", "-");
System.out.println(test);
Angenommen, Sie möchten -
durch \\\-
ersetzen, verwenden Sie:
text.replaceAll("-", "\\\\\\\\-");
Andere haben bereits die richtige Methode angegeben:
+
als \\+
entgehenPattern.quote
-Methode werden alle regulären Ausdrücke entfernt.Eine andere Methode, die Sie verwenden können, ist das Einfügen von +
in eine Zeichenklasse. Viele der Regex-Metazeichen (.
, *
, +
) werden in der Zeichenklasse buchstäblich behandelt.
So können Sie auch tun:
orgStr.replaceAll("[+]",replaceStr);
Wenn Sie eine einfache Zeichenfolge suchen und ersetzen möchten (d. H. Sie brauchen keinen Regex), ist es möglicherweise einfacher, die StringUtils von Apache Commons zu verwenden, mit der Sie schreiben können:
mystr = StringUtils.replace(mystr, "+", "plus");
Wie wäre es, wenn Sie mehrere "+" durch eine undefinierte Anzahl von Wiederholungen ersetzen?
Beispiel: test + test + test + 1234
(+) oder [+] scheinen ein einzelnes Literalzeichen auszuwählen, aber bei Wiederholungen.
String str="Hello+Hello";
str=str.replaceAll("\\+","-");
System.out.println(str);
OR
String str="Hello+Hello";
str=str.replace(Pattern.quote(str),"_");
System.out.println(str);