Java官方文档指出:
"boo:and:foo"例如,字符串使用这些表达式Regex Result产生以下结果: { "boo", "and", "foo" }" 这就是我需要它工作的方式。但是,如果我运行此命令: public static void main(String[] args){ String test = "A|B|C||D"; String[] result = test.split("|"); for(String s : result){ System.out.println(">"+s+"<"); } }
它打印:
>< >A< >|< >B< >|< >C< >|< >|< >D<
这与我的预期相去甚远:
>A< >B< >C< >< >D<
为什么会这样呢?
你需要
test.split("\\|");
split使用正则表达式,并且在regex中 |是表示OR运算符的元字符。你需要使用来转义该字符\(使用String编写,"\\"因为\它也是String文字中的元字符,并且需要另一个字符\来对其进行转义)。
split
regex
"\\"
\
你也可以使用
test.split(Pattern.quote("|"));
并Pattern.quote创建代表的正则表达式的转义版本|。
Pattern.quote