Java 官方文档指出:
"boo:and:foo"例如, string使用这些表达式 Regex Result 产生以下结果:
"boo:and:foo"
{ "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使用正则表达式,并且在 正则表达式 |中是表示OR运算符的元字符。您需要使用转义该字符\(用 String 编写,"\\"因为\它也是 String 文字中的元字符,需要另一个\来转义它)。
split
|
OR
\
"\\"
你也可以使用
test.split(Pattern.quote("|"));
并让我们Pattern.quote创建代表 . 的正则表达式的转义版本|。
Pattern.quote