当我运行以下代码时,我发现了一些奇怪的东西。

下面程序的输出是token1 = AAAAA token2 = BBBBB |

但是,据我了解,应该是token1 = AAAAA token2 = BBBBB | DUMMY

public class TestToken {

    public static void main(final String[] args) {
        final String delim = "DELIM";
        String token1 = "AAAAA";
        String token2 = "BBBBB|DUMMY";
        final String input = token1 + delim + token2;
        final StringTokenizer tokenizer = new StringTokenizer(input, delim);
        final String text1 = tokenizer.nextToken();
        final String text2 = tokenizer.nextToken();
        System.out.println("token1=" + text1);
        System.out.println("token2=" + text2);
        System.out.println();
    }

}


有人可以向我解释如何解决此问题,以及为什么会这样吗?

最佳答案

摘录自constructor's documentation


  delim参数中的字符是用于分隔标记的定界符。


这意味着每个字符都是一个定界符,而不是整个字符串。实际上,您有5个定界符(字符DELIM)。

您可以使用以下代码查看效果

while (tokenizer.hasMoreTokens())
   System.out.println(tokenizer.nextToken());


输出:

AAAAA
BBBBB|
U
Y

07-26 06:49