java 空白字符_java中split任意数量的空白字符

java程序中经常通过split截取字符串来取得其中的关键字。但是由于其中不同操作系统或者不同作者的习惯,经常会出现不同数量的空格,例如"   "(3个空格);或者出现制表符、Tab符号"    "(Tab键)。因此合理的通过任意数量的空白字符切割获取关键字非常重要。下面是我一步步摸索找出解决方案的过程。结局很重要,整个的思维过程也是相当有意义的。

1. 问题的提出:

String sample = "a b c d";

String[] arrays = sample.split(" ");

for(String s : arrays)

{

System.out.println(s);

}

由于字符串中出现了不定个数的空格,所以截取的字符串数组中肯定会出现空格字符串,结果如下:

100249510.png

利用java正则表达式的贪婪原则,提出解决方法:

String sample = "a b c d";

String[] arrays = sample.split(" +");

for(String s : arrays)

{

System.out.println(s);

}

结果:

101130329.png

2.另一个问题的提出:

id userName sex

0 root male

1 user1 female

我要从上述文件读取每一行字符串并且split,但是由于格式化以及各人之间的习惯,每一行中间都充斥着空格和Tab键,因此第一种解决方案无法运用到这上面去。想到正则表达式中有“\s”代表任意空白字符,这里便可以解决问题:

String sample1 = "0 root male";

String sample2 = "1 user1 female";

String[] arrays = sample1.split("\\s+");

for(String s : arrays)

{

System.out.println(s);

}

System.out.println("----------------------");

arrays = sample2.split("\\s+");

for(String s : arrays)

{

System.out.println(s);

}

结果:

102314640.png

3.字符串前后含有空白字符的情况:

String sample1 = " 0 root male";

String[] arrays = sample1.split("\\s+");

for(String s : arrays)

{

System.out.println(s);

}

这时候打印结果会在前面多一个空的字符串,解决方法是在split之前先进行trim()操作,由于trim()支持级联调用,可以写成下面的方式:

String sample1 = " 0 root male";

String[] arrays = sample1.trim().split("\\s+");

for(String s : arrays)

{

System.out.println(s);

}

结果Ok了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值