好的,你可能会说这是一个重复的帖子,但它是不同的。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