【发布时间】:2013-01-30 23:22:18
【问题描述】:
我有一个由制表符和空格以及一些任意字符组成的字符串。下面的字符串由space space tab tab 1 space tab -2 tab space + space 组成。
import java.util.Arrays;
String[] s = " 1 -2 + ".split("[\\s]+");
System.out.println(Arrays.toString(s));
使用正则表达式[\s+] 运行拆分会得到[1, -2, +],但是我在我的机器(OS X,JDK1.6.0_37)上得到的返回数组是[, 1, -2, +]。
原来第一个元素只是“空白”(s[0].equals("") 返回true),所以它应该与\s 匹配。
我错过了什么?
【问题讨论】:
-
这对我来说很有意义——想象一下,如果你有一个第一行是“,foo,bar”的 CSV 文件——那自然不会暗示有三列,第一个值为空吗?
-
不需要字符类,
\s+也能正常工作