Ich habe eine Zeichenfolge mit vielen Sonderzeichen. Ich möchte alle entfernen, aber alphabetische Zeichen behalten.Wie können Sonderzeichen in einer Zeichenfolge ersetzt werden?
Wie kann ich das tun?
Ich habe eine Zeichenfolge mit vielen Sonderzeichen. Ich möchte alle entfernen, aber alphabetische Zeichen behalten.Wie können Sonderzeichen in einer Zeichenfolge ersetzt werden?
Wie kann ich das tun?
Das hängt davon ab, was Sie meinen. Wenn Sie nur loswerden von ihnen wollen bekommen, dies zu tun:
(Update: Anscheinend wollen Sie Ziffern als auch halten, um die zweiten Linien in diesem Fall verwenden)
String alphaOnly = input.replaceAll("[^a-zA-Z]+","");
String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");
oder das Äquivalent:
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
(Alle diese Faktoren können durch die Vorkompilieren RegexMuster signifikant verbessert werden und es in einem konstanten Speichern)
Oder mit Guava:
private static final CharMatcher ALNUM =
CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z'))
.or(CharMatcher.inRange('0', '9')).precomputed();
// ...
String alphaAndDigits = ALNUM.retainFrom(input);
Aber wenn Sie wollen etwas akzentuierte Zeichen in drehen sinnvoll, dass nach wie vor ascii ist, auf diese Fragen suchen:
Dank Floydit es fine.but ein Problem arbeitet, ist es – Tanu
, wenn ich diese Funktion bin mit Es entfernt alle Zahlen als auch. Aber ich will nicht, dass Zahlen entfernen. gerade Sonderzeichen entfernen möchten. Bitte schlagen Sie etwas vor. – Tanu
gut Sie sagten, dass Sie nur das Alphabet wollten. Aber ich werde meine Antwort in einer Minute aktualisieren –
Sie können Verwenden Sie grundlegende reguläre Ausdrücke für Strings, um alle Sonderzeichen oder zu finden Verwenden Sie Pattern- und Matcher-Klassen zum Suchen/Ändern/Löschen von benutzerdefinierten Strings. Dieser Link enthält einige einfache und leicht verständliche Beispiele für reguläre Ausdrücke: http://www.vogella.de/articles/JavaRegularExpressions/article.html
Ich benutze dies.
s = s.replaceAll("\\W", "");
Es ersetzt alle Sonderzeichen aus Zeichenfolge.
Hier
\ w: Ein Wortzeichen, die Abkürzung für [a-zA-Z_0-9]
\ W: Ein Nicht-Wortzeichen
Das ist gut, aber auch Entfernt Leerzeichen. –
Was ist, wenn ich den Raum nicht entfernen möchte? –
Funktioniert nicht für . Wie entferne ich '<', '>', '\' Zeichen? – Manoj
Sie können für diese Junk erhalten Unicode Zeichen von Charactermap Werkzeug im Fenster pc und add \ u z \ u00a9 für das Copyright-Symbol. Jetzt können Sie diese Zeichenfolge mit diesem bestimmten Junk-Charakter verwenden, entfernen Sie keine Junk-Zeichen, sondern ersetzen Sie sie durch den richtigen Unicode.
Sie können die folgende Methode verwenden, um alphanumerische Zeichen beizubehalten.
replaceAll("[^a-zA-Z0-9]", "");
Und wenn Sie nur alphabetische Zeichen behalten wollen verwenden diese
replaceAll("[^a-zA-Z]", "");
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
Hier alle Sonderzeichen außer Leerzeichen, Komma, und Ampersand ersetzt werden. Sie können auch Leerzeichen, Komma und kaufmännisches Und zwar mit dem folgenden regulären Ausdruck weglassen.
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
Wo Eingabe der Zeichenfolge, die wir die Zeichen ersetzen müssen.
dieses Thema suchen: http://stackoverflow.com/questions/3438854/replace-unicode-control-characters-existing-solution –