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);
}
由于字符串中出现了不定个数的空格,所以截取的字符串数组中肯定会出现空格字符串,结果如下:

利用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了。
java中split任意数量的空白字符的更多相关文章
- 关于java中split的使用
		
之前在http://shukuiyan.iteye.com/blog/507915文中已经叙述过这个问题,但是最近一次笔试中居然有碰到了这个知识点,而且还做错了,囧!学艺不精啊.题目大概是这样的: ) ...
 - java中split以"."分割的问题
		
今天开发中使用字符串分割函数split(),发现:输出的并不是想要的结果 或者直接报错都有可能 查询后才发现,需要转译 原来在java中函数split(".")必须是是split( ...
 - java中split(regex)使用中要注意的问题:正则表达式
		
比如我在项目中遇到的(,),.,|,*等等类的符号: String area="(30.13206313822174, 120.4156494140625)(29.8763738070713 ...
 - Java中split的对象被特殊字符(.或|)分隔
		
在Java中,一个String对象被一些特殊字符分隔时,可以使用split()方法,生成一个String[],然后进行其他的操作,就像下面这样: String str = "a1_b1_c1 ...
 - Java中split的用法
		
Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:java.lang.string.splitsplit 方法 ...
 - java中split函数参数特殊字符的处理(转义),如:"." 、"\"、"|"
		
内容介绍 本文主要介绍java中特殊字符做为split函数的参数,如:"." ."\"."|",双引号等,不能正确分隔源字符串的处理方法. ...
 - Java中Split函数的用法技巧
		
在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧.如执行:"2|33|4".split(&quo ...
 - 正则化—Java中Split函数的用法技巧_(转载修改)
		
原文地址:http://www.cnblogs.com/liubiqu/archive/2008/08/14/1267867.html java.lang.string.split split 方法 ...
 - 小细节:Java中split()中的特殊分隔符 小数点
		
这两天做项目过程中由于数据表字段设计的太恶心了,导致自己填坑 关于微信支付和支付宝的支付有一个不同点:就是金额的处理,支付宝金额的单位是0.01元,但是微信支付中1表示0.01元,当时设计价格的时候使 ...
 
随机推荐
- 程序员必需知道的Windows Shell命令
			
Windows系统本来就很人性化的操作系统,操作很方便,但是对于开发人员来说,有些时候改变一些电脑配置或者执行某些任务来说,使用GUI操作反而事倍功半,因此建议使用Shell命令来提高一下工作效率. ...
 - Linux认知之旅【04 进一步了解目录】!
			
一.目录是什么? 二.不得不提的文件系统! 三.绝对路经,相对路径
 - URAL 1684. Jack's Last Word ( KMP next函数应用 )
			
题意:问第二行的串能不能恰好分割成几个串,使得这几个串都是第一行串的前缀.如果是,输出No, 并输出这几个串,否则输出Yes. 这题是Special Judge,把两个串连接起来,中间用一个未出现过的 ...
 - VS2017 + EF + MySQL 我使用过程中遇到的坑
			
原文:VS2017 + EF + MySQL 我使用过程中遇到的坑 写在前面: 第一次使用MySQL连接VS的时候本着最新版的应该就是最好的,在MySQL官网下载了最新版的MySQL没有并且安装完成之 ...
 - sql server 中使用 LIKE 语句 SqlParameter 使用
			
原本写的 select * from table where name like '%@searchStr%' 怎么执行都不对,想想 参数是不能加 引号的 于是改为select * from tab ...
 - hadoop生态圈列式存储系统--kudu介绍及安装配置
			
介绍 Kudu 是一个针对 Apache Hadoop 平台而开发的列式存储管理器.Kudu 共享 Hadoop 生态系统应用的常见技术特性: 它在 commodity hardware(商品硬件)上 ...
 - 【bzoj4146】[AMPPZ2014]Divisors  数论
			
原文地址:http://www.cnblogs.com/GXZlegend/p/6801411.html 题目描述 给定一个序列a[1],a[2],...,a[n].求满足i!=j且a[i]|a[j] ...
 - LeetCode -- Search a 2D Matrix & Search a 2D Matrix II
			
Question: Search a 2D Matrix Write an efficient algorithm that searches for a value in an m x n matr ...
 - 洛谷 P2597 [ZJOI2012]灾难 解题报告
			
P2597 [ZJOI2012]灾难 题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发 ...
 - Java基础语法实例(1)——实习第一天
			
来到广州实习的第一天,我选择的是JavaEE,因为以后的方向是Java,所以就选择了它.感觉有一段时间没有接触Java了.趁此机会好好努力,将基础巩固好. Java输入及循环,判断,字符转换,数组定义 ...