可能重复:
How do I split a string with any whitespace chars as delimiters?
这两个Python行都给出了完全相同的列表:
print("1 2 3".split())
print("1 2 3".split())
输出:
['1', '2', '3']
['1', '2', '3']
当Java'等价物'拒绝时,我感到很惊讶:
System.out.println(Arrays.asList("1 2 3".split(" ")));
System.out.println(Arrays.asList("1 2 3".split(" ")));
输出:
[1, 2, 3]
[1, , 2, , , 3]
如何让Java忽略空格数?
答案 0 :(得分:22)
试试这个:
"1 2 3".split(" +")
// original code, modified:
System.out.println(Arrays.asList("1 2 3".split(" +")));
System.out.println(Arrays.asList("1 2 3".split(" +")));
传递给split()
的参数是一个正则表达式,因此您可以指定允许分隔符为一个或多个空格。
我还允许标签和其他空白字符作为分隔符,使用“\ s”:
"1 2 3".split("\\s+")
如果你希望在" 1 2 3 "
中有尾随或标题空格,请使用:
" 1 2 3 ".replaceAll("(^\\s+|\\s+$)", "").split("\\s+")
答案 1 :(得分:4)
如何使用整洁的regular expression?请注意,根据Java API文档,String.split将采用正则表达式字符串参数。
"1 2 3".split("\\s+")
答案 2 :(得分:3)
我认为应该这样做:
yourString.trim().split("\\s+");
答案 3 :(得分:0)
我更喜欢"1 2 3".split("\s+")
而不是"1 2 3".split(" +")
。
当您使用\s
代替“”时,它更具可读性和更安全性。