その文字を文字列から削除したい:
+ - ! ( ) { } [ ] ^ ~ : \
また、それらを削除したい:
/*
*/
&&
||
つまり、削除しない&
か|
、最初の文字の後に 2 番目の文字が続く場合は削除します ( /* */ && ||
)
Javaでそれを効率的かつ迅速に行うにはどうすればよいですか?
例:
a:b+c1|x||c*(?)
になります:
abc1|xc*?
その文字を文字列から削除したい:
+ - ! ( ) { } [ ] ^ ~ : \
また、それらを削除したい:
/*
*/
&&
||
つまり、削除しない&
か|
、最初の文字の後に 2 番目の文字が続く場合は削除します ( /* */ && ||
)
Javaでそれを効率的かつ迅速に行うにはどうすればよいですか?
例:
a:b+c1|x||c*(?)
になります:
abc1|xc*?
それを行うには2つの方法があります:
1)
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("+");
arrayList.add("-");
arrayList.add("||");
arrayList.add("&&");
arrayList.add("(");
arrayList.add(")");
arrayList.add("{");
arrayList.add("}");
arrayList.add("[");
arrayList.add("]");
arrayList.add("~");
arrayList.add("^");
arrayList.add(":");
arrayList.add("/");
arrayList.add("/*");
arrayList.add("*/");
String string = "a:b+c1|x||c*(?)";
for (int i = 0; i < arrayList.size(); i++) {
if (string.contains(arrayList.get(i)));
string=string.replace(arrayList.get(i), "");
}
System.out.println(string);
2)
String string = "a:b+c1|x||c*(?)";
string = string.replaceAll("[+\\-!(){}\\[\\]^~:\\\\]|/\\*|\\*/|&&|\\|\\|", "");
System.out.println(string);
トーマスは、文字列から特殊文字を削除する方法について書いていますか? :
それは、特殊文字として何を定義するかによって異なりますが、replaceAll(...) を試してください。
String result = yourString.replaceAll("[-+.^:,]","");
^ 文字はリストの最初の文字であってはならないことに注意してください。エスケープする必要があるか、「これらの文字以外」を意味するからです。
別の注意: - 文字はリストの最初または最後の文字である必要があります。そうでない場合は、エスケープするか、範囲を定義する必要があります (例: :-, は「: から , の範囲内のすべての文字」を意味します)。
したがって、一貫性を保ち、文字の位置に依存しないようにするために、正規表現で特別な意味を持つすべての文字をエスケープすることをお勧めします (次のリストは完全ではないため、(、{、$ などの他の文字に注意してください)。等。):
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
すべての句読点と記号を取り除きたい場合は、次の正規表現を試してください: \p{P}\p{S} (Java 文字列ではバックスラッシュをエスケープする必要があることに注意してください: "\p{P}\ p{S}")。
文字列に何を残すかを正確に定義できる場合、3 番目の方法は次のようになります。
String result = yourString.replaceAll("[^\\w\\s]","");
レイが提案したように、「許可された文字を定義する」アプローチのより制限の少ない代替手段を次に示します。
String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
正規表現は、どの言語の文字でもセパレーターでもないすべてのもの (空白、改行など) に一致します。[\P{L}\P{Z}] (大文字の P はそのプロパティがないことを意味します) は使用できないことに注意してください。 、文字は空白ではなく、その逆であるためです。