以下Java代码将打印“0”。我希望这会打印“4”。根据Java API String.split“将此字符串拆分为给定正则表达式的匹配项”。并从链接的正则表达式文档:
预定义的字符类
。任何字符(可能与行终止符匹配也可能不匹配)
因此我希望在每个角色上分开“测试”。我显然误解了一些事情。
System.out.println("Test".split(".").length); //0
答案 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方法。