日期:2014-05-20  浏览次数:20870 次

用空格分割字符串,为什么不对??
      String test = "a   vf";
      String[] tokens = test.split("\\s");   
      System.out.println(tokens.length);


输出怎么会是4呢?应该是2吧。
------解决方案--------------------
a   vf这中间不止一个空格啊
------解决方案--------------------

     String test = "a   vf";
      String[] tokens = test.split("\\s+");   
      System.out.println(tokens.length);

这样就对了吧!
------解决方案--------------------
引用:
Java code

     String test = "a   vf";
      String[] tokens = test.split("\\s+");   
      System.out.println(tokens.length);


这样就对了吧!



------解决方案--------------------
中间三个空格,那么就是4了……

"a" "" "" "vf"
是不是4个呢?
------解决方案--------------------
你那个是空格字符的表达式
空白表达式包括[ \t\n\x0B\f\r]

要是你只想空格,还是老老实实的" "这样吧
------解决方案--------------------
你可以把所有分割后的字符串数组打印出来不就知道了。
------解决方案--------------------
引用:
引用:
Java code

String test = "a vf";
String[] tokens = test.split("\\s+");
System.out.println(tokens.length);


这样就对了吧!



+1
------解决方案--------------------
路过。。。。。。
------解决方案--------------------
引用:
aUUUvf

大家看吧,U代表空格,那么第一个U分隔,
a
后边是UUvf
这里的第一个U是字符串,
那么第二个U再次成为分隔符。
vf

那么共是 a U vf
length = 3;


混乱……
"aUUUvf"="a"+"U"+""+"U"+""+"U"+"vf"
U作为分隔符,把所有的U去掉,剩下的就是"a"、""、""、"vf"这四个
------解决方案--------------------
引用:
引用:

aUUUvf

大家看吧,U代表空格,那么第一个U分隔,
a
后边是UUvf
这里的第一个U是字符串,
那么第二个U再次成为分隔符。
vf

那么共是 a U vf
length = 3;


混乱……
"aUUUvf"="a"+"U"+""+"U"+""+"U"+"vf"
U作为分隔符,把所有的U去掉,剩下……

嗯,确实是4个
------解决方案--------------------
引用:
aUUUvf

大家看吧,U代表空格,那么第一个U分隔,
a
后边是UUvf
这里的第一个U是字符串,
那么第二个U再次成为分隔符。
vf

那么共是 a U vf
length = 3;


因为JVM把每个空格都当作分割符,空格之间当作一个空字符串,3个空格中间就有2个空字符"";加上"a"和"vf"就是四个了;可以用a,,,vf试下,也是四个,跟用空格分隔字符串无关,这是String 中spit();的分割原理造成的;
------解决方案--------------------
\s 不是空格,表示的是空白字符,比如:空格、TAB、换行符、回车符等。