String.Split的行为不符合预期

时间:2012-11-25 00:43:20

标签: java string split

我有一个非常大的字符串。可以在这里看到: http://pastebin.com/vqXJ3WV6

我想使用正则表达式3.8拆分此字符串 当我使用记事本搜索此字符串时,我发现3.8的两个实例。 因此,我希望返回的数组的长度为3。

System.err.println(convertPdfToText(save).split("3.8").length);

但是,使用convertPdfToText调用此字符串获取此字符串的长度为4?

enter image description here

我根本不明白这一点。任何人都可以告诉我发生了什么,因为这会大大改变我的程序的行为。

提前致谢

1 个答案:

答案 0 :(得分:3)

.字符是正则表达式中的特殊字符,字面意思是“任何字符”。所以你基本上都在寻找3[anything]8,快速的正则表达式搜索显示确实有3个匹配。两个是您实际需要的有效“3.8”字符串。您的意外匹配位于此字符串的末尾:

3.4 Unit 3: Spanish speaking 46953 8

解决方案只是使用.文字,而不是使用反斜杠转义字符:

System.err.println(convertPdfToText(save).split("3\\.8").length);