2017-04-06 19 views
0

Wenn ich eine Zeichenkette "ja.v_,a" habe, wie kann ich alle nicht-Buchstabenzeichen zum Ausgang "java" entfernen? Ich habe versucht str = str.replaceAll("\\W", ""), aber ohne Erfolg.Alle Zeichen außer Buchstaben in einer Zeichenkette entfernen

+0

Welche Programmiersprache verwenden Sie? – Sedrick

+1

entfernen/ersetzen '[^ a-z]'? (d. h. alle Nicht-Buchstaben 'a..z' Symbole) –

+1

Ich würde eine for-Schleife verwenden, die jedes Zeichen überprüft. Wenn es ein Char ist, würde ich zu einer Zeichenkette verketten. Character.isAlphabetic() ist ein Ausgangspunkt – Sedrick

Antwort

1

Konnten Sie dieses versuchen?

System.out.println("ja.v_,a".replaceAll("[^a-zA-Z]", "")) //java 
+0

Das hat funktioniert. Vielen Dank! – Eragon20

0
String s = "ja.v_,a"; 
s = s.replaceAll("[^a-z]", ""); 
System.out.println(s); 

>java 
2

Ich möchte this article beziehen und sie zitieren:

Regex Beispiele und Tutorials geben Sie immer die [a-zA-Z0-9] + Regex "alphanumerische Eingabe bestätigen". Es ist in vielen Validierungs-Frameworks integriert. Und es ist so völlig falsch. Dies ist eine Regex, die niemals irgendwo in Ihrem Code erscheinen darf, außer Sie haben eine ziemlich gute Erklärung. Das Beispiel ist jedoch allgegenwärtig. Stattdessen die richtige regex ist [\ p {L} 0-9] +

Also in Ihrem Fall wäre es:

str.replaceAll("[^\\p{L}]", ""); 
System.out.println("ja.v_,a".replaceAll("[^\\p{L}]", "")); 
System.out.println("сл-=о-_=во!".replaceAll("[^\\p{L}]", "")); 

Wo \p{L} die Unicode-Definition eines "Letter" ist.

+0

Die Anweisung 'str.replaceAll (" [^ \ p {L}] "," ");' ist nutzlos. Sie müssen das Ergebnis irgendwie verwenden. –

+1

@AndyTurner das ist wahr, mein Punkt war, dass in 2017 "a-z" 'Muster wäre nicht die beste Lösung für einen guten Entwickler, um sich daran zu gewöhnen. Die Begründung ist in dem Artikel dargelegt, auf den ich Bezug genommen habe. –

+1

Dies ist eine wichtige Antwort. Ich würde nur die Erklärung hinzufügen, dass '\ p {L}' die Unicode-Definition eines "Buchstabens" ist. –

1
String test= "ja.v_,a"; 

int len=test.length(); 

String alphaString=""; 

for(int i=0; i<len; i++){ 
    if (Character.isLetter(test.charAt(i))) { 
     alphaString=alphaString+test.charAt(i); 
    } 
} 

System.out.println(alphaString); 
Verwandte Themen