Ich möchte Sonderzeichen entfernen wie:
- + ^ . : ,
von einem String mit Java.
Das hängt davon ab, was Sie als Sonderzeichen definieren, aber versuchen Sie es mit replaceAll(...)
:
String result = yourString.replaceAll("[-+.^:,]","");
Beachten Sie, dass das Zeichen ^
nicht das erste Zeichen in der Liste sein darf, da Sie es entweder entgehen müssen oder es würde "alle außer diesen Zeichen" bedeuten.
Noch ein Hinweis: Das Zeichen -
muss das erste oder das letzte Zeichen in der Liste sein, andernfalls müssten Sie es umgehen oder es würde einen Bereich definieren (zB :-,
bedeutet "alle Zeichen in der Bereich :
bis ,
).
Um die Konsistenz zu erhalten und nicht von der Zeichenpositionierung abhängig zu sein, möchten Sie möglicherweise alle Zeichen, die in regulären Ausdrücken eine besondere Bedeutung haben, mit einem Escape-Zeichen versehen (die folgende Liste ist nicht vollständig. Achten Sie daher auf andere Zeichen wie (
, {
, $
usw.):
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
Wenn Sie alle Satzzeichen und Symbole loswerden möchten, probieren Sie diesen Regex: \p{P}\p{S}
(Denken Sie daran, dass Sie in Java-Strings die umgekehrten Schrägstriche umgehen müssen: "\\p{P}\\p{S}"
).
Ein dritter Weg könnte so aussehen, wenn Sie genau definieren können, was in Ihrer Zeichenfolge verbleiben soll:
String result = yourString.replaceAll("[^\\w\\s]","");
Das bedeutet: Ersetzen Sie alles, was kein Word-Zeichen ist (in jedem Fall a-z, 0-9 oder _) oder Leerzeichen.
Bearbeiten: Bitte beachten Sie, dass es einige andere Muster gibt, die sich als hilfreich erweisen könnten. Ich kann sie jedoch nicht alle erklären. Schauen Sie sich den Referenzabschnitt von regular-expressions.info an.
Eine weniger einschränkende Alternative zum Ansatz "zulässige Zeichen definieren", wie von Ray vorgeschlagen:
String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
Der Regex passt zu allem, was kein Buchstabe in irgendeiner Sprache ist, und nicht als Trennzeichen (Leerzeichen, Zeilenumbruch usw.). Beachten Sie, dass Sie [\P{L}\P{Z}]
(Großbuchstabe P bedeutet, diese Eigenschaft nicht zu haben) nicht verwenden kann, da dies "alles bedeuten würde, was kein Buchstabe ist oder kein Leerraum", was fast alles entspricht, da Buchstaben kein Leerzeichen und sind und umgekehrt.
Zusätzliche Informationen zu Unicode
Einige Unicode-Zeichen scheinen Probleme zu verursachen, da sie unterschiedlich codiert werden können (als einzelner Codepunkt oder als Kombination von Codepunkten). Weitere Informationen finden Sie unter regular-expressions.info .
Wie hier beschrieben http://developer.Android.com/reference/Java/util/regex/Pattern.html
Muster sind reguläre Ausdrücke. In vielen Fällen sind Bequemlichkeitsmethoden wie
String.matches
,String.replaceAll
undString.split
vorzuziehen, aber wenn Sie mit demselben regulären Ausdruck viel Arbeit erledigen müssen, ist es möglicherweise effizienter, ihn einmal zu kompilieren und wiederzuverwenden. Die Pattern-Klasse und ihr Begleiter Matcher bieten auch mehr Funktionen als die geringe Menge, die String zur Verfügung stellt.
public class RegularExpressionTest {
public static void main(String[] args) {
System.out.println("String is = "+getOnlyStrings("!&(*^*(^(+one(&(^()(*)(*&^%$#@!#$%^&*()("));
System.out.println("Number is = "+getOnlyDigits("&(*^*(^(+91-&*9hi-639-0097(&(^("));
}
public static String getOnlyDigits(String s) {
Pattern pattern = Pattern.compile("[^0-9]");
Matcher matcher = pattern.matcher(s);
String number = matcher.replaceAll("");
return number;
}
public static String getOnlyStrings(String s) {
Pattern pattern = Pattern.compile("[^a-z A-Z]");
Matcher matcher = pattern.matcher(s);
String number = matcher.replaceAll("");
return number;
}
}
Ergebnis
String is = one
Number is = 9196390097
Versuchen Sie die replaceAll()
-Methode der String
-Klasse.
Übrigens ist hier die Methode, der Rückgabetyp und die Parameter.
public String replaceAll(String regex,
String replacement)
Beispiel:
String str = "Hello +-^ my + - friends ^ ^^-- ^^^ +!";
str = str.replaceAll("[-+^]*", "");
Es sollte alle {'^', '+', '-'} Zeichen entfernen, die Sie entfernen wollten!
Dadurch werden alle Zeichen außer alphanumerisch ersetzt
replaceAll("[^A-Za-z0-9]","");
Sonderzeichen entfernen
String t2 = "[email protected]#$%^&*()-';,./?><+abdd";
t2 = t2.replaceAll("\\W+","");
Die Ausgabe wird sein: abdd.
Das funktioniert perfekt.
Verwenden Sie die String.replaceAll()
-Methode in Java. replaceAll sollte für Ihr Problem gut genug sein.
Sie können einzelne Zeichen wie folgt entfernen:
String str="+919595354336";
String result = str.replaceAll("\\\\+","");
System.out.println(result);
AUSGABE:
919595354336
Wenn Sie nur ein Literal in Java ersetzen möchten, verwenden Sie Pattern.quote(string)
, um einen beliebigen String in ein Literal zu konvertieren.
myString.replaceAll(Pattern.quote(matchingStr), replacementStr)