これは重複した投稿だとは言えますが、異なっています。複数の区切り文字を使用するJavaの文字列解析またはsplit()バグ
私は、ユーザーによって指定された区切り記号を削除する何らかの種類の作業に取り組んでいるプログラムに取り組んでいます。区切り文字が単一の文字(特殊文字かどうか)であれば、私のプログラムは動作しています。ただし、ユーザー入力が文字列の場合、メッセージ文字列から区切り文字のすべての文字が削除されます。
ex。文字列メッセージ= "ab \ nc [d] e {fMardk1g(h)i} j"; 出力はbcefghij ですが、期待される出力はabcdefghij
です。私はPatternクラスを初めて使用するので、どこに問題があるのか分かりません。
ここで問題のコード(私はそう、私は問題を特定することができ、テストクラスにそれを置く)です:
輸入java.util.regex.Patternのは、
public class ParsingTest {
public static void main(String[] args) {
String[] delimiters = { "Mardk1", "\n", "[", "]", "{", "}", "(", ")" };
StringBuilder regexp = new StringBuilder("");
regexp.append("[");
for(String s : delimiters) {
regexp.append("[");
regexp.append(Pattern.quote(s));
regexp.append("]");
}
regexp.append("]");
String message = "ab\nc[d]e{fMardk1g(h)i}j";
StringBuilder result = new StringBuilder("");
String[] a = message.split(regexp.toString());
for(String string : a) {
result.append(string);
}
System.out.println(result);
for(String str: a) System.out.print(str);
System.out.println();
}
}
あなたの生成された正規表現は '[Mardk1]'文字のいずれかで区切ります 'M、R、D、Kまたは1が含まれています:
正規表現を構築する代わりにこれを試してみてください'これがあなたの出力に' a'文字が表示されない理由です。 – rodion