Versuch, den String „something“ mit String#replaceAll() in „something“ umzuwandeln ist aufgrund der Doppelrolle des Zeichens als Escape-Zeichen sowohl in Strings als auch in regulären Zeichen problematisch Ausdrücke.
Das Anwenden des Ausdrucks string.replaceAll("", "\") führt zum Fehler „java.util.regex.PatternSyntaxException: Unexpected internal error near index 1“. Dies liegt daran, dass der reguläre Ausdruck das erste als Escape-Zeichen für das zweite interpretiert.
Lösung 1: Doppeltes Escaping mit Regex
Um das Zeichen in einem regulären Ausdruck zu maskieren , es muss doppelt maskiert werden. Der korrekte Ausdruck ist:
string.replaceAll("\\", "\\\\");
Lösung 2: Zeichenweises Ersetzen mit Ersetzen
Wenn eine exakte zeichenweise Ersetzung gewünscht wird, verwenden Sie reguläre Ausdrücke sind nicht notwendig. Stattdessen kann die Methode String#replace() verwendet werden:
string.replace("\", "\\");
Zusätzlicher Hinweis: Escape für JavaScript
Wenn die Zeichenfolge in einem JavaScript verwendet werden soll Kontext wird die Methode StringEscapeUtils#escapeEcmaScript() empfohlen, um einen größeren Bereich von Escape-Zeichen abzudecken.
Das obige ist der detaillierte Inhalt vonWie kann man Backslashes in Java-Strings mit „replaceAll' und „replace' richtig maskieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!