2017-06-26 6 views
0

Ich versuche, Sonderzeichen aus der Zeichenfolge zu entfernen, aber der Punkt ist nur "?" immer noch auf der Ausgangszeichenfolge, während die anderen ordnungsgemäß entfernt wurden.Warum meine replaceAll nicht funktioniert

String[] special = {"\\*",";","_","=", "\\[", "\\]", ":", "\\?", "-", "\\.", 
"\\)", "\\(", "/", "!", "#", ",", "\"", "“", "”"}; 
    for (int i = 0; i < special.length; i++) { 
     source = source.replaceAll(special[i], ""); 
    } 

das ist mein String

https://file.io/JjiLhD

+0

Duplizieren von [dieser] (https://stackoverflow.com/questions/13696461/replace-special-character-with-an-escape-preceded- Sonderzeichen-in-Java) SO Frage. –

+0

Mögliches Duplikat von [Ersetze Sonderzeichen durch ein Escapezeichen vor Sonderzeichen in Java] (https://stackoverflow.com/questions/13696461/replace-special-character-with-an-escape-preceded-special-character-in- java) –

+0

Ich weiß, es ist doppelt Ich weiß, wie ersetzen Arbeit, aber ich will nur wissen, warum Fragezeichen immer noch auf meinem Text erscheinen, warum andere ordnungsgemäß ersetzt wurde –

Antwort

4

Sie replace statt replaceAll verwenden sollten, weil replaceAll Eingang regex verwendet mit replaceAll aber unterschiedliche Eingangs

for (int i = 0; i < special.length; i++) { 
     source = source.replace(special[i], ""); 
    } 

replace gleiche Funktion ist

Ersetzt jede Teilzeichenfolge dieser Zeichenfolge, die der literalen Zielsequenz mit der angegebenen literalen Ersetzungsfolge entspricht.

+0

danke für die antwort, aber wenn ich ersetze es wird tun 1 mal aber replaceAll ersetzen alle meine kontext gibt es noch "?" erscheint :( –

+1

Nein, 'ersetzen 'hat replaceAll Aufgabe, können Sie es versuchen, Es ist Java-Namensgebung Problem, können Sie Javadoc darüber lesen – Jerry06

0

Versuchen Sie dies für alphanumeric Zeichen.

.replaceAll("[^a-zA-Z0-9]", "")); 

und nur alphabetical Zeichen,

.replaceAll("[^a-zA-Z]", "")); 
Verwandte Themen