好的,你可能會說這是一個重複的帖子,但它是不同的。Java - 使用多個分隔符的字符串解析或split()錯誤
我正在處理某種程序,該程序正在處理用戶指定的某種刪除分隔符。如果分隔符只是一個單獨的字符(特殊與否),我的程序正在工作。但是,如果用戶輸入是字符串,則會從消息字符串中刪除分隔符的所有字符。
前。 String message =「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,A,R,d,k或1 ',這就是爲什麼你在輸出中看不到'a'字符的原因。 – rodion