如果字符是分隔符的一部分,则java StringTokenizer会跳过这些字符

时间:2014-04-28 06:53:29

标签: java string

我在使用java string tokenizer时遇到了问题:

String myString = "1||2||3|||4";

StringTokenizer stp = new StringTokenizer(myString, "||");
while (stp.hasMoreTokens()) {
    System.out.println(stp.nextToken());
}

实际输出:[1,2,3,4]

预期输出:[1,2,3,'|4']

任何人都能帮助我吗

5 个答案:

答案 0 :(得分:1)

试试这个..

    String myString = "1||2||3|||4";
    String[] s=myString.split("\\|\\|");
    for (String string : s) {
        System.err.println(string);
    }

答案 1 :(得分:0)

我认为你不能做任何事情,因为StringTokenizer的工作原理是什么(你可以把returnDelims设为真,然后手动删除它,但有时比看上去更难)

String myString = "1||2||3|||4";

String[] tokens = myString.split("\\|\\|");
for(String token : tokens)
{
    System.out.println(token);
}

您可以使用您想要的分割。

输出:

  

1

     

2

     

3

     

| 4

答案 2 :(得分:0)

建议使用String类的split方法执行此操作,因为StringTokenizer与给定的字符串匹配,split使用正则表达式。我会用这个:

String[] splitStr = myString.split("[|]{2}");

每当正则表达式[|](单个管道)连续两次匹配时,它匹配。

答案 3 :(得分:0)

你可能会想到String.split,因为这会分裂在分隔符字符串上。

StringTokenizer接受分隔符字符串并将其中的所有字符识别为分隔符。所以实际上你冗余地指定了“|”角色第二次。

您可能需要使用拆分功能:

System.out.println(Arrays.toString("1||2||3|||4".split("\\|\\|")));

这会产生

  

[1,2,3,| 4]

答案 4 :(得分:0)

看看这是一个简单的解决方案:

StringTokenizer stp = new StringTokenizer(myString, "|");
        while (stp.hasMoreTokens()) {
            System.out.println(stp.nextToken());
        }