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

1. 问题的提出:

String sample = "a  b c    d";
String[] arrays = sample.split(" ");
for(String s : arrays)
{
System.out.println(s);
}

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

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

String sample = "a  b c    d";
String[] arrays = sample.split(" +");
for(String s : arrays)
{
System.out.println(s);
}

结果:

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);
}

结果:

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了。

最新文章

  1. JAVA解析XML的四种方法
  2. Ubuntu开机自启动
  3. linux各种命令
  4. lazyload懒加载的使用
  5. OpenFlow Switch学习笔记(七)——Matching Fields
  6. SqlServer中截取字符串
  7. 轻量级交互数据json格式初探
  8. org.springframework.core.Ordered接口
  9. 从计算机语言的发展到我的第一行代码(HelloWorld)
  10. php加密字符串超时不可解密
  11. jQuery系列 第八章 jQuery框架Ajax模块
  12. MySQL自定义函数与存储过程
  13. Asp.Net MVC WebAPI的创建与前台Jquery ajax后台HttpClient调用详解
  14. 清北学堂北京大学冯哲神仙讲课day2
  15. UVALive - 3266 Tian Ji -- The Horse Racing(贪心)
  16. Python解决乱码问题
  17. jquery--blur()事件,在页面加载时自动获取焦点
  18. Python实现常用的逻辑数据结构
  19. ftp--pureftpd1.0.46
  20. 接口测试工具 — jmeter(关联)

热门文章

  1. 使用原生node写一个聊天室
  2. Java基础-5运算符
  3. python 多版本的兼容
  4. eclipse把jar包引入项目的两种方法
  5. 孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录
  6. 孤荷凌寒自学python第二十九天python的datetime.time模块
  7. python /usr/bin/python^M: bad interpreter: No such file
  8. CSLA多语言设置
  9. jQuery选择器之全选择器(*选择器)
  10. redis各种数据结构使用场景