string.split()过滤一个或者多个空格或者字符问题
在学习MapReduce过程中,用到了字符串的拆分,遇到了一些问题,做总结
我的问题
**一个字符串 String s = “a b b c d”;
是这个样子的 [a][ ][b][ ][ ][ ][b][ ][c][ ][d] 这个里面有一个空格和多个空格的形式
这里不一定是空格,其他的字符也可以
1 简单的拆分:
String s = "a b b c d";
String[ ] sArrary = s.split(" ");
for(int i=0;i<sArrary.length;i++){
System.out.println(i+"===/"+sArrary[i]);
}
输出:
0===/a
1===/b
2===/
3===/
4===/b
5===/c
6===d
问题:那三个【】【】【】 中间的那个被认为是flag,然后把两边的【】保留
2 多空格统一拆分:
String s = "a b b c d";
String[ ] sArrary = s.split("\\s+ ");
for(int i=0;i<sArrary.length;i++){
System.out.println(i+"===/"+sArrary[i]);
}
输出:
0===/a b
1===/b c d
这种方式适合统一的多空格, [a][ ][ ][ ][b][ ][ ][ ][b][ ][ ][ ][c][ ][ ][ ][d] ,就是每一个字符都由多个空格隔开
3 多空格混合拆分:
String s = "a b b c d ";
String[ ] sArrary = s.split("\\s+");
for(int i=0;i<sArrary.length;i++){
System.out.println(i+"===/"+sArrary[i]);
}
输出:
0===/a
1===/b
2===/b
3===/c
4===/d
这种方式不一定有几个空格, 这也是我最终想要的结果