String replaceAll() Problem

wSam

Erfahrenes Mitglied
Hallo zusammen

Ich möchte via

Java:
String text = "blablksajfkeiskj kjsk dfkewkjöiei ";
text.replaceAll("[Alter String-Problem ist a-Kabutt]", "neuer String");

in einem Text diverse Substrings durch andere Substrings ersetzten. Ich dachte dass dies mit String.replaceAll(String alterString, String neuerString); doch gut gehen sollte. Jedoch bekomme ich bei folgendem zu ersetzenden String eine PatternSyntaxException:

Java:
"[Alter String-Problem ist a-Kabutt]"

Folgende Fehlermeldung wird ausgegeben:

Java:
java.util.regex.PatternSyntaxException: Illegal character range near index 13
[Alter String-Problem ist a-Kabutt]
              ^
	java.util.regex.Pattern.error(Pattern.java:1541)
	java.util.regex.Pattern.range(Pattern.java:2128)
	java.util.regex.Pattern.clazz(Pattern.java:2069)
	java.util.regex.Pattern.sequence(Pattern.java:1598)
	java.util.regex.Pattern.expr(Pattern.java:1558)
	java.util.regex.Pattern.compile(Pattern.java:1291)
	java.util.regex.Pattern.<init>(Pattern.java:1047)
	java.util.regex.Pattern.compile(Pattern.java:785)
	java.lang.String.replaceAll(String.java:1663)

Warum gibt es dort ein Problem im Zusammenhang mit "[" und "-"?

Vielen Dank im Voraus und Gruss
 
Du kannst Zeichen die Java als Teil eines Regulären Ausdrucks ansieht durch \\ escapen. In deinem Beispiel ist das bei [ - und ] der Fall (soweit ich sehe). Ansonsten gibt es auch bei den Commons Bibliotheken bei lang die Klasse StringUtils die auch Stringersetzungen kann ohne das ganze als Regex zu interpretieren.
 
Zurück