Java String split regex无法按预期工作

时间:2009-12-29 13:45:47

标签: java regex

以下Java代码将打印“0”。我希望这会打印“4”。根据Java API String.split“将此字符串拆分为给定正则表达式的匹配项”。并从链接的正则表达式文档:

预定义的字符类
任何字符(可能与行终止符匹配也可能不匹配)

因此我希望在每个角色上分开“测试”。我显然误解了一些事情。

System.out.println("Test".split(".").length); //0

3 个答案:

答案 0 :(得分:6)

你是对的:它在每个角色上分开。但是,此函数不返回“split”字符,因此产生0。

javadoc中的重要部分:“因此,尾随空字符串不包含在结果数组中。”

我认为你想要"Test".split(".", -1).length(),但这将返回5而不是4(有5个''空格'':一个在T之前,一个在T和e之间,另一个在es,st和最后一个在最后的t之后。)

答案 1 :(得分:2)

你必须使用两个反斜杠,它应该工作正常: 这是一个例子:

String[] parts = string.split("\\.",-1);

答案 2 :(得分:1)

一切都好。 “测试”在每个角色上分开,因此它们之间没有角色。如果你想在每个字符上迭代你的字符串,你可以使用charAt和length方法。