java - Warum replaceAll funktioniert nicht?

8

Ich beginne zu lernen Regex und ich weiß nicht, ob ich es richtig verstehe.

Ich habe ein Problem mit der Funktion replaceAll, weil es das Zeichen in einer Zeichenfolge, die ich ersetzen möchte, nicht ersetzt.

Hier ist mein Code:

%Vor%

Die Ausgabe ist identisch mit der des Originals. Nichts hat sich geändert.

Ich möchte, dass die Ausgabe wie folgt aussieht: Hel\%l\&+++o\_Wor\_++l\%d\&\# .

Bitte helfen Sie. Vielen Dank im Voraus.

    
NinjaBoy 12.07.2012, 07:30
quelle

1 Antwort

11

Der Grund, warum es nicht funktioniert: Sie benötigen vier Backslashes in einer Java-Zeichenfolge, um einen einzelnen "echten" Backslash zu erstellen.

%Vor%

sollte funktionieren. Aber das ist nicht der richtige Weg. Sie benötigen keine for -Schleife:

%Vor%

und du bist fertig.

Erläuterung:

  • [%&_] entspricht einem der drei Zeichen, die Sie ersetzen möchten
  • "\\%code%" ist das Ergebnis der Übereinstimmung, also
  • %code% bedeutet "ein Backslash plus was auch immer von der Regex gefunden wurde".

Vorbehalt: Diese Lösung überprüft offensichtlich nicht, ob einer dieser Zeichen bereits zuvor ausgetrickst wurde. Also

%Vor%

würde

werden %Vor%

was du nicht willst. Könnte das ein Problem sein?

    
Tim Pietzcker 12.07.2012, 07:34
quelle

Tags und Links