繁体   English   中英

StringTokenizer是否在令牌上有最大长度?

[英]Does StringTokenizer have any max length on tokens?

我有一段代码一直工作到今天。 调试后,我意识到最后一个令牌没有正确收集。 我认为是因为他的身高(超过1万个字符)。

码:

StringTokenizer tokens = new StringTokenizer(myString,"&&&&&&&"); 
(...)
String s=tokens.nextToken();
//Do something with s
s=tokens.nextToken();
//Do something with s
s=tokens.nextToken();
//Do something with s

//Now it's time of last and biggest token
s=tokens.nextToken(); // --> s does not contain entire string

您以错误的方式使用StringTokenizer 您的标记生成器不会像期望的那样在"&&&&&&&"处分割,而是在'&'处分割,因为它只需要从分隔符String中分隔一个字符来分隔标记。 然后,它会丢弃空令牌,这就是为什么无论如何都能获得预期结果的原因。 例如:

    StringTokenizer tokens = new StringTokenizer("a&&b&&c", "&&&");
    while (tokens.hasMoreTokens()) {
        System.out.println(tokens.nextToken());
    }

打印:

a
b
c

因此,我怀疑您的1万枚代币中有一个& 如果可能的话,我建议使用msaint的建议,即使用String.split() ,如果您有能力修改旧代码的话。

API的长度似乎没有限制。 我试图重现您的案件,但未能成功。 我从stringtokenizer中获得了7个超级字符。 您可以先检查您的字符串,然后尝试分割,因为stringtokenizer是旧类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM