【发布时间】:2014-11-04 14:00:43
【问题描述】:
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 文档中阅读了以下内容,
分隔符用于分隔标记。令牌是最大值 不是分隔符的连续字符序列
如果是这种情况,我的分隔符“-|-”不应该用于将字符串分成 2 个吗?
【问题讨论】:
-
你打印了令牌吗?
-
@vefthym 是的,我做到了。请检查我的编辑。
-
如果有 4 个令牌 (
1||2|3||4),为什么要打印 2 而不是 4?请注意,双管道 (||) 被认为是中间有一个空(因此被忽略)标记的分隔符。 -
@BlackPanther 看看 Seelenvirtuose 的回答:StringTokenizer 使用单独的 characters 作为分隔符,您的引用指出标记 in between 可能是更长的序列字符,但分隔符是在构造函数中传递的任何字符序列,即
-|-将导致分隔符匹配任何减号和管道序列,例如|---|--|||-也是一个有效的分隔符。要拆分整个字符串,您需要使用String#split()等。
标签: java string stringtokenizer