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()对同一个参数表现不同。
答案 0 :(得分:7)
new StringTokenizer(str, delim)
的delim
参数不是正则表达式。您告诉StringTokenizer
在 \
,s
或+
,而不是的任何分开34;一个或多个空格字符"。并且在你的字符串中唯一适用的字符是" s"在" Geeks"中,这就是字符串被拆分的地方。
如果您想要分隔空格(一个或多个),只需使用other constructor不使用delim
参数,默认使用" \t\n\r\f"
。