文字列内のすべての空白文字を「+」で置き換え、すべての「ß」を「ss」で置き換えたい...「ß」ではうまく機能しますが、Eclipseでは\ sを空白に使用できません。 。代わりに「\ t」を試してみましたが、どちらも機能しません。次のエラーが表示されます。
無効なエスケープシーケンス(有効なエスケープシーケンスは\ b\t\n\f\r\"\ '\)
これは私のコードです:
try {
String temp1 = from.getText().toString();
start_from = temp1.replaceAll("ß", "ss");
start_from = start_from.replaceAll("\s", "+");
}
なぜ機能しないのですか? Android、Eclipse、または何に問題がありますか?
前もって感謝します!
スラッシュをエスケープする必要があります
start_from = start_from.replaceAll("\\s", "+");
問題はそれです \
は、Java だけでなく正規表現パターンのエスケープ文字です。正規表現パターンに一致させたい場合は\n
、言う、そしてあなたは先に行き、書くだろう
replaceAll("\n", "+");
正規表現パターンは\n
:"\n"
はJavaを意味します。 パターンにバックスラッシュを含める場合は、そのバックスラッシュをエスケープして、文字列内で特殊文字として扱われないようにする必要があります。
replaceAll("\\s", "+");
Java.util.regex.Patternクラスを使用し、p = Pattern.compile("\s");
のようなものをp.matcher(start_from).replaceAll("+")
と組み合わせて使用できます。または、「\ s」メタ文字を「\\ s」としてエスケープします。