String s = "test -||- testing again -|- test_1 -||- testing again_1";
StringTokenizer tokenizer = new StringTokenizer(s,"-|-");
System.out.println(tokenizer.countTokens());
while(tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
输出:
4
test
testing again
test_1
testing again_1
计数不应该是2 ..?
我尝试打印令牌,并打印出所有字符串。不仅应将其视为一种象征。
我还从java API doc中读到了以下内容,
分隔符用于分隔标记。令牌是最大的 非分隔符的连续字符序列
如果是这种情况,不应该使用我的分隔符“ - | - ”将字符串拆分为2吗?
答案 0 :(得分:6)
StringTokenizer
使用分隔符字符,而不是您明显假设的分隔字符串。
因此,所有出现的任何分隔字符都会出现,并且会围绕它们进行标记。这会产生你得到的四个标记(省略空标记)。
如果您想通过分隔字符串拆分字符串,则必须使用带有正则表达式的String.split
:
String s = "test -||- testing again -|- test_1 -||- testing again_1";
String[] split = s.split("-\\|-"); // "|" is a special char in regex
System.out.println(split.length);
输出为“2”。