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.)
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}]+","");
(All dies kann erheblich verbessert werden, indem das Regex-Muster vorkompiliert und in einer Konstanten gespeichert wird.)
Oder mit Guave :
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);
Wenn Sie jedoch Zeichen mit Akzent in etwas Sinnvolles verwandeln möchten, das immer noch ASCII ist, schauen Sie sich diese Fragen an:
Ich benutze das.
s = s.replaceAll("\\W", "");
Es ersetzt alle Sonderzeichen aus der Zeichenfolge.
Hier
\ w: Ein Wortzeichen, kurz für [a-zA-Z_0-9]
\ W: Ein Nicht-Wort-Zeichen
Ersetzen Sie Sonderzeichen durch
replaceAll("\\your special character","new character");
Beispiel: um das gesamte Auftreten von * durch Leerzeichen zu ersetzen
replaceAll("\\*","");
* Diese Anweisung kann jeweils nur einen Sonderzeichentyp ersetzen
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
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.
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
Wobei Eingabe die Zeichenfolge ist, die wir benötigen, um die Zeichen zu ersetzen.
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;
public class UriUtility {
public static String 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.
Verwenden Sie für Leerzeichen dieses Muster "[^ az AZ 0-9]"