Ersetzen Sie alle "?" durch "\\?" in Java [duplizieren]

7

ist es möglich, alle Fragezeichen ("?") durch "\?" ?

Sagen wir, ich habe eine Zeichenfolge, und ich möchte einige Teile dieser Zeichenfolge löschen, einen Teil mit einer URL darin. So:

%Vor%

Aber! Wie ich es verstehe, können Sie die replaceAll () Methode nicht mit einem String verwenden, der ein einzelnes Fragezeichen enthält, Sie müssen sie wie folgt machen: "\?" zuerst.

Die Frage ist also; Gibt es eine Möglichkeit, Fragezeichen durch "\?" in einer Zeichenfolge? Und nein, ich kann nur die Zeichenfolge ändern.

Danke im Voraus, hoffe jemand versteht mich! (Sorry für schlechtes Englisch ...)

    
GuiceU 09.12.2012, 20:31
quelle

4 Antworten

16

Verwenden Sie nicht replaceAll() , verwenden Sie replace() !

Es ist ein häufiges Missverständnis, dass replaceAll() alle Vorkommen ersetzt und replace() nur eins oder etwas ersetzt. Das ist völlig falsch.

replaceAll() ist schlecht benannt - es ersetzt tatsächlich einen regex .
replace() ersetzt einfache Strings, was Sie wollen.

Beide Methoden ersetzen alle Vorkommen des Ziels.

Mach einfach folgendes:

%Vor%

Und es wird alles funktionieren.

    
Bohemian 09.12.2012, 20:38
quelle
5

Entkomme auch die \ mit \\? .

%Vor%

Aber wie andere Antwort erwähnt haben, ist replaceAll etwas übertrieben, nur ein replace sollte funktionieren.

    
PearsonArtPhoto 09.12.2012 20:32
quelle
2

replaceAll nimmt einen regulären Ausdruck, und ? hat in der Regex-Welt eine besondere Bedeutung.

Sie sollten replace in diesem Fall, da Sie keine Regex benötigen.

%Vor%

Oh, und Strings sind unveränderlich !! longstring = longstring.replace(..) , beachte die Zuweisung.

    
arshajii 09.12.2012 20:32
quelle
2

Verwenden Sie String.replace() anstelle von String.replaceAll() :

%Vor%

String.replaceAll() verwendet Regulärer Ausdruck , während String.replace() verwendet einfachen Text.

    
Eng.Fouad 09.12.2012 20:32
quelle

Tags und Links