Das hängt davon ab, was du meinst. Wenn Sie sie nur entfernen möchten, gehen Sie folgendermaßen vor: (Update: Anscheinend möchten Sie auch die Ziffern behalten, verwenden Sie in diesem Fall die zweiten Zeilen.)
Wenn ich diese Funktion benutze, werden auch alle Zahlen entfernt. Aber ich möchte nicht, dass Zahlen entfernt werden. Ich möchte nur Sonderzeichen entfernen. Bitte schlagen Sie etwas vor.
Tanu
Nun, Sie sagten, Sie wollten nur das Alphabet. Aber ich werde meine Antwort in einer Minute aktualisieren
Sean Patrick Floyd
Ich möchte einen Concat-String erstellen, aber mit einer Bedingung wie 1.Wenn es nur ein Ergebnis gibt, ist kein Concat erforderlich. 2.Wenn das Ergebnis mehr als 1 als der Concat-String im folgenden Formularbeispiel ist: Stack + Over + Flow
Tanu
2
@ Tanu das ist eine andere Frage. Machen Sie es neu
Pekka
Was ist, wenn ich nicht möchte, dass Leerzeichen entfernt werden? oder sagen alle Leerzeichen wie Tabulatoren, Zeilenumbrüche als nur ein Leerzeichen reduziert?
Verdammt
74
Ich benutze das.
s = s.replaceAll("\\W","");
Es ersetzt alle Sonderzeichen aus der Zeichenfolge.
Hier werden alle Sonderzeichen außer Leerzeichen, Komma und kaufmännisches Und ersetzt. Sie können auch Leerzeichen, Komma und kaufmännisches Und durch den folgenden regulären Ausdruck weglassen.
Nach dem Beispiel der Antwort von Andrzej Doyle denke ich, dass die bessere Lösung darin besteht, Folgendes zu verwenden org.apache.commons.lang3.StringUtils.stripAccents():
package bla.bla.utility;import org.apache.commons.lang3.StringUtils;publicclassUriUtility{publicstaticString normalizeUri(String s){String r =StringUtils.stripAccents(s);
r = r.replace(" ","_");
r = r.replaceAll("[^\\.A-Za-z0-9_]","");return r;}}
Sie können grundlegende reguläre Ausdrücke für Zeichenfolgen verwenden, um alle Sonderzeichen zu finden, oder Muster- und Matcher-Klassen verwenden, um benutzerdefinierte Zeichenfolgen zu suchen, zu ändern oder zu löschen. 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
Sie können Unicode für dieses Junk-Zeichen aus dem Characterermap-Tool im Fenster-PC abrufen und \ u zB \ u00a9 als Copyright-Symbol hinzufügen. Jetzt können Sie diese Zeichenfolge mit diesem bestimmten Junk-Zeichen verwenden. Entfernen Sie kein Junk-Zeichen, sondern ersetzen Sie es durch den richtigen Unicode.
Antworten:
Das hängt davon ab, was du meinst. Wenn Sie sie nur entfernen möchten, gehen Sie folgendermaßen vor:
(Update: Anscheinend möchten Sie auch die Ziffern behalten, verwenden Sie in diesem Fall die zweiten Zeilen.)
oder das Äquivalent:
(All dies kann erheblich verbessert werden, indem das Regex-Muster vorkompiliert und in einer Konstanten gespeichert wird.)
Oder mit Guave :
Wenn Sie jedoch Zeichen mit Akzent in etwas Sinnvolles verwandeln möchten, das immer noch ASCII ist, schauen Sie sich diese Fragen an:
quelle
Ich benutze das.
Es ersetzt alle Sonderzeichen aus der Zeichenfolge.
Hier
\ w: Ein Wortzeichen, kurz für [a-zA-Z_0-9]
\ W: Ein Nicht-Wort-Zeichen
quelle
Mit der folgenden Methode können Sie alphanumerische Zeichen beibehalten.
Und wenn Sie nur alphabetische Zeichen behalten möchten, verwenden Sie diese
quelle
replaceAll("[^a-zA-Z0-9 ]", "");
Ersetzen Sie Sonderzeichen durch
Beispiel: um das gesamte Auftreten von * durch Leerzeichen zu ersetzen
* Diese Anweisung kann jeweils nur einen Sonderzeichentyp ersetzen
quelle
Hier werden alle Sonderzeichen außer Leerzeichen, Komma und kaufmännisches Und ersetzt. Sie können auch Leerzeichen, Komma und kaufmännisches Und durch den folgenden regulären Ausdruck weglassen.
Wobei Eingabe die Zeichenfolge ist, die wir benötigen, um die Zeichen zu ersetzen.
quelle
Nach dem Beispiel der Antwort von Andrzej Doyle denke ich, dass die bessere Lösung darin besteht, Folgendes zu verwenden
org.apache.commons.lang3.StringUtils.stripAccents()
:quelle
Sie können grundlegende reguläre Ausdrücke für Zeichenfolgen verwenden, um alle Sonderzeichen zu finden, oder Muster- und Matcher-Klassen verwenden, um benutzerdefinierte Zeichenfolgen zu suchen, zu ändern oder zu löschen. 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
quelle
Sie können Unicode für dieses Junk-Zeichen aus dem Characterermap-Tool im Fenster-PC abrufen und \ u zB \ u00a9 als Copyright-Symbol hinzufügen. Jetzt können Sie diese Zeichenfolge mit diesem bestimmten Junk-Zeichen verwenden. Entfernen Sie kein Junk-Zeichen, sondern ersetzen Sie es durch den richtigen Unicode.
quelle
Verwenden Sie für Leerzeichen dieses Muster "[^ az AZ 0-9]"
quelle