2

我有这个字符串

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";

如果我像这样进行拆分String vec2 [] = x.split(",");,输出将是这样

2013-04-17T08:00:00.001
41.14806
-9.58972
-13.0
0.0
0.0
-20.0

等等。

如果我像这样进行拆分String vec2[] = x.split("|");,则输出是这样的:

2
0
1
3
-
0
4
-
1
7
T
0
8
:
0
0
:

等等。

我希望有类似的东西:

    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

知道有什么问题吗?

4

7 回答 7

10

你需要逃避|

String vec2[] = x.split("\\|");

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

在正则表达式中,某些字符具有特殊含义。竖线|表示交替。所以如果你想根据 进行拆分|,你需要写\\|which like tell:“不要 | 作为特殊字符,将其作为符号 |”。

于 2013-04-17T08:59:24.143 回答
2

split 的参数是正则表达式和“|” 字符具有特殊含义。尝试逃避它\\|

于 2013-04-17T08:59:55.083 回答
1

String.split(String)在正则表达式上拆分,而不是在字符上。正如您在Java 正则表达式构造的摘要中看到的那样,|函数作为or构造。

如果要拆分|字符,可能需要使用\|. 请注意,要在 Java 中转义它String,您还需要转义反斜杠:\\|.

于 2013-04-17T09:00:36.587 回答
1

问题是它split(String regex)需要一个正则表达式作为参数。管道 ( |) 是正则表达式中的特殊字符,因此必须转义:

        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";
        String[] arr = x.split("\\|");
        for(String str : arr)
        {
            System.out.println(str);
        }

产量:

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
于 2013-04-17T09:00:50.200 回答
1

试试这个

 String vec2[] = x.split("\\|");
于 2013-04-17T09:00:58.080 回答
1

您需要转义|字符,因为它是正则表达式或模式。

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";
String[] arr = x.split("\\|");
for(String s: arr){
    System.out.println(s);
}
于 2013-04-17T09:01:00.853 回答
0

您是否尝试过这样逃避角色

x.split("\\|");
于 2013-04-17T09:01:06.777 回答