【问题标题】:Splitting a space separated string拆分空格分隔的字符串
【发布时间】:2014-01-10 01:26:05
【问题描述】:
String numbers = "5 1 5 1";
那么,是吗:
String [] splitNumbers = numbers.split();
或:
String [] splitNumbers = numbers.split("\s+");
寻找:["5","1","5","1"]
知道为什么.split 行都不起作用吗?我尝试阅读有关正则表达式的答案,但我没有得到任何结果。
【问题讨论】:
标签:
java
regex
string
split
【解决方案1】:
在上述情况split("\s+"); 中,您需要使用另一个反斜杠转义\,即:
split("\\s+");
或者
split(" ");也可以
注意 split("\\s+"); 分割任意长度的空格,包括换行符(\n)、制表符(\t),而split(" "); 将分割只有一个空格。
例如,当您将字符串用两个空格分隔时,请说“5 1 5 1”,
使用split("\\s+"); 你会得到{"5","1","5","1"}
在使用split(" "); 时,您将获得{"5","","1","5","1"}
【解决方案2】:
您必须使用额外的\ 转义正则表达式,因为\ 表示转义字符:
public static void main(String[] args) {
String numbers = "5 1 5 1";
String[] tokens = numbers.split("\\s+");
for(String token:tokens){
System.out.println(token);
}
}
所以额外的\ 转义了下一个\,然后将其视为文字\。
当使用\\s+ 时,字符串将被拆分为多个空白字符(空格、制表符等)。