java replaceAll funktioniert nicht für \ n Zeichen

8

Ich habe eine Zeichenkette wie folgt: John \n Barber Jetzt möchte ich \ n durch ein neues Zeichen ersetzen, damit es

wird

John

Barbier

das ist mein Code dafür

%Vor%

aber es funktioniert nicht und gibt mir die gleiche Zeichenfolge John \n Barber

    
user2790289 18.09.2013, 06:36
quelle

4 Antworten

17

Sie müssen Folgendes tun:

%Vor%

Die Methode replaceAll erwartet in ihrem ersten Argument eine Regex. Wenn du 2 \ in Java String übergibst, passierst du tatsächlich eins. Das Problem ist, dass \ ein Escape-Zeichen auch in Regex ist, also ist die Regex für \n tatsächlich \n , also müssen Sie ein zusätzliches \ zweimal einfügen.

    
Avi 18.09.2013, 06:38
quelle
2

Sie müssen \ character umgehen. Also probiere

aus %Vor%     
Rafi Kamal 18.09.2013 06:39
quelle
2

replaceAll verwendet reguläre Ausdrücke, Sie können ersetzen verwenden, wodurch auch alle \ n:

ersetzt werden %Vor%     
stan 18.09.2013 06:41
quelle
2

Da \n (oder auch das rohe neue Zeilenzeichen U + 000A) in Regex als neues Zeilenzeichen interpretiert wird, benötigen Sie \n (escape \ ), um den Schrägstrich \ gefolgt von% co_de anzugeben %.

Das ist aus der Perspektive der Regex-Engine.

Aus der Sicht des Compilers müssen Sie in der Java-Literal-Zeichenfolge n entziehen, sodass wir eine weitere Escape-Ebene hinzufügen:

%Vor%     
nhahtdh 18.09.2013 06:39
quelle

Tags und Links