Java 中导入excel时使用 trim() 无法去除空格的问题解决方案
使用trim无法去除空格的解决方法
一、问题描述
在excel导入操作时,读取cell中的字符串时,获取到了cell中的字符串后,通过string的trim()方法去掉前后的空格,发现如论如何也去不掉。
二、原因分析
摸索一段时间后发现,是输入法的全角和半角空格的原因,trim()方法只能去掉字符串中的ASCII值为32的空格,即半角的空格,无法去除全角的空格。也就是说,trim或者replace只能去掉ASCII值为32的空格,而ASCII值为160或全角的空格是无法通过replace或者trim处理的全角空格:有的称呼为 中文空格 ; 半角空格:有的称呼为 英文空格。例如:开启全角后,输入法内容是这样的:abcd 半角输入是这样的:abcd ,输入法,默认都是半角的。切换全半角的方式:shift+space
三、解决方案
方案一:使用正则表达式
ASCII编码是160的空格,Unicode对应是\u00A0,使用replace+UNICODE编码\u00A0替换,全角空格(\u3000),使用replace方法+全角空格字符替换,普通空格,使用replace方法+\s替换,正则表达式.replaceAll(“([ ]|\s|\u00A0)+”,“”)
如下:
1 2 3 4 5 6 7 | public class Demo1 { public static void main(String[] args) { String s2 = "全角空格测试 !!"; System.out.println(s1.replaceAll("([ ]|\\s|\\u00A0)+","")); // 全角空格测试!! } } |
方案二:使用String.strip()
我这里的问题是全角空格导致的,所以可以使用String.strip()去除字符串前后的“全角和半角”空白字符
1 2 3 4 5 6 7 8 9 | public class Demo1 { public static void main(String[] args) { String s3 = "吃了没\u3000"; System.out.println(s3.trim().length()); System.out.println(s3.strip().length()); // 4 3 System.out.println(s3.strip()); // "吃了没" } |
注意: JDK11中引入String.strip(),如果你的项目是用的JDK11以下的环境,是用不了该方法的。
方案三:使用 hutool的 StrUtil.trim()方法
可以使用 spring提供的工具类 StringUtils.trimWhitespace() 去除 字符串中的全角空格代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /**@Description: 全角 空格去除测试 */ @Test public void test2(){ String sLeft = " 左全角空格"; String sMid = " 两边 全角空格 "; String sRight = "右边全角空格 "; System.out.println("String工具类 left:"+ org.springframework.util.StringUtils.trimTrailingWhitespace(sLeft)); System.out.println("String工具类 mid:"+ org.springframework.util.StringUtils.trimTrailingWhitespace(sMid)); System.out.println("String工具类 right:"+ org.springframework.util.StringUtils.trimTrailingWhitespace(sRight)); // 使用 hutool的 StrUtil System.out.println("Hutool StrUtil 工具类 left:"+StrUtil.trim(sLeft)); System.out.println("Hutool StrUtil 工具类 mid:"+StrUtil.trim(sMid)); System.out.println("Hutool StrUtil 工具类 right:"+StrUtil.trim(sRight)); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /**@Description:Hutool StrUtil 去除普通半角空格 * <br> 半角空格=英文空格; 全角空格=中文空格 */ @Test public void test3(){ String sLeft = " 左半角 右全角 "; System.out.println("原始字符串:"+sLeft); System.out.println("hutool :"+StrUtil.trim(sLeft)); System.out.println("StringUtil :"+StringUtils.trim(sLeft)); System.out.println("Spring StringUtil :"+ org.springframework.util.StringUtils.trimWhitespace(sLeft)); // 去掉 字符串中全部空格 System.out.println(org.springframework.util.StringUtils.trimAllWhitespace(sLeft)); sLeft = StrUtil.trim(sLeft); System.out.println("最终去除效果:"+sLeft); } |
四、总结
1、java的String类中的trim方法,只能去除 半角空格,遇到空格去不掉的情况,可能的全角空格,可以考虑使用hutool或者spring提供的工具类试试。
2、hutool 的pom依赖是:
1 2 3 4 5 | <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.18</version> </dependency> |
注意:apache-commons-lang3 里的StringUtils工具类,无法去除全角空格,原因是:实际调用的是 String类的trim()方法。
到此这篇关于Java 中导入excel时使用 trim() 无法去除空格的解决方法的文章就介绍到这了,更多相关java导入excel使用trim() 无法去除空格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)
这篇文章主要介绍了IDEA2019.3配置Hibernate的详细教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-05-05IDEA项目启动时Flyway数据库迁移中的checksum不匹配问题及最新解决方案
面对IDEA项目启动时报出的Flyway迁移校验和不匹配问题,核心在于保持迁移脚本的一致性、正确管理和理解Flyway的工作机制,本文介绍IDEA项目启动时Flyway数据库迁移中的checksum不匹配问题及最新解决方案,感兴趣的朋友一起看看吧2024-01-01基于Java代码实现判断春节、端午节、中秋节等法定节假日的方法
这篇文章主要介绍了基于Java代码实现判断春节、端午节、中秋节等法定节假日的方法 的相关资料,需要的朋友可以参考下2016-01-01
最新评论