webentwicklung-frage-antwort-db.com.de

So ersetzen Sie ein Pluszeichen mit der String.replaceAll-Methode von Java

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.

38
John Topley

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:

"\\+"
83
toolkit

lassen Sie Java im Zweifelsfall die Arbeit für Sie erledigen:

myStr.replaceAll(Pattern.quote("+"), replaceStr);
31
james

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);
14
Kris

Angenommen, Sie möchten - durch \\\- ersetzen, verwenden Sie:

 text.replaceAll("-", "\\\\\\\\-");
2
Ramnath

Andere haben bereits die richtige Methode angegeben:

  1. + als \\+ entgehen
  2. Mit der Pattern.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);

Ideone Link

2
codaddict

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");
2
Simon Nickerson

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.

0
Jay
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);