簡體   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