为什么split()和StringTokenizer()表现不同

时间:2017-08-21 11:56:57

标签: java regex string

 public class NewClass
{
    public static void main(String args[])
     {
        System.out.println("Operation 1");
        StringTokenizer st1 =
            new StringTokenizer("Hello   Geeks How are you", "\\s+");
            while (st1.hasMoreTokens())
            System.out.println(st1.nextToken());
            String s = "Hello   Geeks How are you";
            String s1[]= s.split("\\s+");
            System.out.println("Operation 2");

            for( String temp : s1) {
                System.out.println(temp);
            }
    }
}

执行代码后,我得到输出为: -

Operation 1
Hello   Geek
 How are you
Operation 2
Hello
Geeks
How
are
you

我不知道为什么split()和StringTokenizer()对同一个参数表现不同。

1 个答案:

答案 0 :(得分:7)

new StringTokenizer(str, delim)delim参数不是正则表达式。您告诉StringTokenizer \s+而不是任何分开34;一个或多个空格字符"。并且在你的字符串中唯一适用的字符是" s"在" Geeks"中,这就是字符串被拆分的地方。

如果您想要分隔空格(一个或多个),只需使用other constructor不使用delim参数,默认使用" \t\n\r\f"