Split String方法的奇怪行为

时间:2015-09-05 16:22:49

标签: java string split

考虑以下简单的代码行:

public class Main {

    public static void main(String[] args) {

        String string = "Lorem,ipsum,dolor,sit,amet";
        String[] strings = string.split(",");

        for (String s : strings) {
            System.out.println(s);
        }
    }
}

正如所料,输出如下:

Lorem
ipsum
dolor
sit
amet

现在考虑以前代码的变体,我只需将,变为|

public class Main {

    public static void main(String[] args) {

        String string = "Lorem|ipsum|dolor|sit|amet";
        String[] strings = string.split("|");

        for (String s : strings) {
            System.out.println(s);
        }
    }
}

我期待相同的输出,但奇怪的是:

L
o
r
e
m
|
i
p
s
u
m
|
d
o
l
o
r
|
s
i
t
|
a
m
e
t

怎么了?

1 个答案:

答案 0 :(得分:7)

String#split()方法接受正则表达式,|在正则表达式中具有特殊含义。

要查看|的预期结果转义。

String[] splits=string.split("\\|");

或者您可以使用Pattern课程,以避免所有混乱。

String[] splits= string.split(Pattern.quote("|"));