Java字符串拆分给出意外结果

unp*_*pix 2 java string split

我有这个字符串

String x = "2013-04-17T08:00:00.001,41.14806,-9.58972,-13.0,0.0,0.0,-20.0,4|2013-04-17T08:00:00.001,41.14806,-9.58972,-22.0,0.0,0.0,-20.0,4|2013-04-17T08:00:00.001,41.14806,-9.58972,-31.0,0.0,0.0,-20.0,4|2013-04-17T08:00:00.001,41.14806,-9.58972,-40.0,0.0,0.0,-20.0,4|2013-04-17T08:00:00.001,41.14806,-9.58972,-49.0,0.0,0.0,-20.0,4|2013-04-17T08:00:00.001,41.14806,-9.58972,-58.0,0.0,0.0,-20.0,4|2013-04-17T08:00:00.001,41.14806,-9.58972,-64.0,0.0,0.0,-20.0,4";
Run Code Online (Sandbox Code Playgroud)

如果我正在进行这样的分割String vec2 [] = x.split(",");输出就是这个

2013-04-17T08:00:00.001
41.14806
-9.58972
-13.0
0.0
0.0
-20.0
Run Code Online (Sandbox Code Playgroud)

等等.

如果我这样做分割String vec2[] = x.split("|");输出是这样的:

2
0
1
3
-
0
4
-
1
7
T
0
8
:
0
0
:
Run Code Online (Sandbox Code Playgroud)

等等.

我期待类似的东西:

    2013-04-17T08:00:00.001,41.14806,-9.58972,-13.0,0.0,0.0,-20.0,4
    2013-04-17T08:00:00.001,41.14806,-9.58972,-22.0,0.0,0.0,-20.0,4
    and so on
Run Code Online (Sandbox Code Playgroud)

知道什么是错的吗?

Mar*_*oun 10

你需要逃避|:

String vec2[] = x.split("\\|");
Run Code Online (Sandbox Code Playgroud)

那是因为split()的参数是正则表达式而不是字符串.

在正则表达式中,某些字符具有特殊含义.垂直条|代表交替.因此,如果你想按照分割|,你需要写出\\|一个告诉:" 不要 | 把它作为特殊字符,把它作为符号 | ".