Hi,
Matcher matcher = Pattern.compile("[*\s\n*]").matcher("Dies ist mal ein Test");
Was versprichst Du Dir davon, den Stern zweimal in die Zeichenklasse reinzuwerfen?
StringBuffer outputNeu = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(outputNeu, "$");
}
matcher.appendTail(outputNeu);
Erklärung: Ich möchte in dem String "Dies ist mal ein Test" alle Leerzeichen durch $ Zeichen ersetzen. Leider bekomme ich folgende Exception: String index out of range: 1
Wahrscheinlich liegt es an der RegEx,
Nein. Am Replacement. Mit "x" funktioniert's wunderbar.
Im Replacement wird mit $ eine Referenz auf eine Gruppe eingeleitet. Und da dem Dollarzeichen an Position nichts folgt, geht der Zugriff auf die Gruppennummer an Position 1 schief.
Wenn ein literales $ gewünscht wird, muß dieses also escaped werden.
leider habe ich keine Ahnung warum.
Dann verschaffe Dir Ahnung. Z.B. durch Lesen der Javadoc zu den von Dir verwendeten Klassen. Interessant könnte für Dich auch quoteReplacement in einer dieser Klassen sein. Ich sag jetzt absichtlich nicht, in welcher ...
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.