JAVA 一个或多个空格分割字符串
split方法支持正则表达式:
String str = "a b c d e f g"
习惯用:String [] arr2 = str.split(" ");
多个空格会分割出许多空字符串(即“”)
正确方式,使用正则:
\s表示匹配任何空白字符,+表示匹配一次或多次。
String [] arr = str.split("\\s+");
优化:
String [] arr = str.trim().split("\\s+");
for(String ss : arr){
System.out.println(ss);
}
特别注意:
String str = " a b c d e f g c ";
以上两种方式,
如果首尾巴有空格那么数组第一个元素是空字符串(是“”,不是“ ”),
但是尾部没有空字符串,
所以最好提前trim()去掉首尾所有空格。
1 String str = " a b c d e f g c ";
2 String [] arr = str.split("\\s+");
3 System.out.println(Arrays.asList(arr));
4
5 for(String ss : arr){
6 System.out.println(ss+ss.length());
7 }
8 System.out.println("-------------------");
9 String [] arr2 = str.split(" ");
10 System.out.println(Arrays.asList(arr2));
11 for(String ss : arr2){
12 System.out.println(ss+ss.length());
13 }
14
15 输出:
16 [, a, b, c, d, e, f, g, c]
17 0
18 a1
19 b1
20 c1
21 d1
22 e1
23 f1
24 g1
25 c1
26 -------------------
27 [, , , , a, , b, , , , , c, , d, e, f, , , , , , g, c]
28 0
29 0
30 0
31 0
32 a1
33 0
34 b1
35 0
36 0
37 0
38 0
39 c1
40 0
41 d1
42 e1
43 f1
44 0
45 0
46 0
47 0
48 0
49 g1
50 c1
补充:数组转换为列表输出从第二个元素开始第一个字符是空格
System.out.println(Arrays.asList(new String[]{"a","b","c","d"}));
输出:
[a, b, c, d]