0

假设我有以下字符串str

GTM =0.2
Test =100
[DLM]
ABCDEF =5

(是的,它包含换行符)我试图用[DLM]分隔符子字符串分割,如下所示:

String[] strArr = str.split("[DLM]");

为什么当我这样做时:

System.out.print(strArr[0]);

我得到这个输出:GT

当我这样做的时候

System.out.print(strArr[1]);

我明白了=0.2

这有任何意义吗?

4

4 回答 4

5

str.split("[DLM]");应该str.split("\\[DLM\\]");

为什么?

[并且]特殊字符String#split接受正则表达式。

我更喜欢的解决方案是使用Pattern#quote

str.split(Pattern.quote("[DLM]"));

quote返回给定正则表达式的字符串表示。

于 2013-11-07T13:10:32.967 回答
1

是的,你给出了一个正则表达式,上面写着“用 D、L 或 M 分割”。

你应该像这样逃避那些男孩: str.split("\[DLM\]");

它在第一个 M 处被拆分。

于 2013-11-07T13:11:43.260 回答
1

转义括号

("\\[DLM\\]")

当您在“”内使用括号时,它会将其读取为,括号内的每个字符都是一个分隔符。所以在你的情况下,M是一个分隔符

于 2013-11-07T13:11:51.270 回答
1

利用

 String[] strArr = str.split("\\[DLM]\\");

代替

 String[] strArr = str.split("[DLM]");

否则,它将与 D、L 或 M 分裂。

于 2013-11-07T13:12:47.920 回答