Java 中导入excel时使用 trim() 无法去除空格的问题解决方案

 更新时间:2023年06月26日 09:15:21   作者:初夏0811  
这篇文章主要介绍了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)+”,“”)

如下:

public class Demo1 {
  public static void main(String[] args) {
 		String s2 = "全角空格测试 !!";
        System.out.println(s1.replaceAll("([ ]|\\s|\\u00A0)+",""));
        // 全角空格测试!!
  }
}

方案二:使用String.strip()

我这里的问题是全角空格导致的,所以可以使用String.strip()去除字符串前后的“全角和半角”空白字符

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() 去除 字符串中的全角空格代码如下:

/**@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));
}
/**@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依赖是:

<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() 无法去除空格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java并发编程学习之ThreadLocal源码详析

    Java并发编程学习之ThreadLocal源码详析

    这篇文章主要给大家介绍了关于Java并发编程学习之源码分析ThreadLocal的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • Java FileUploadUtil工具类详解

    Java FileUploadUtil工具类详解

    这篇文章主要为大家详细介绍了Java FileUploadUtil工具类的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • springmvc下实现登录验证码功能示例

    springmvc下实现登录验证码功能示例

    本篇文章主要介绍了springmvc下实现登录验证码功能示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Springboot基于Redisson实现Redis分布式可重入锁源码解析

    Springboot基于Redisson实现Redis分布式可重入锁源码解析

    这篇文章主要介绍了Springboot基于Redisson实现Redis分布式可重入锁,本文通过案例源码分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 通过Java设置Word页面背景色过程详解

    通过Java设置Word页面背景色过程详解

    这篇文章主要介绍了通过Java设置Word页面背景色过程详解,Word中可以针对不同文档排版设计要求来设置背景设置颜色。常见的可设置单一颜色、渐变色或加载图片来设置成背景。下面通过Java来设置以上3种Word页面背景色,需要的朋友可以参考下
    2019-07-07
  • Servlet映射路径匹配解析详解

    Servlet映射路径匹配解析详解

    servlet是javaweb用来处理请求和响应的重要对象,本文将从源码的角度分析tomcat内部是如何根据请求路径匹配得到处理请求的servlet的,感兴趣的可以了解一下
    2022-08-08
  • SpringBoot可视化监控的具体应用

    SpringBoot可视化监控的具体应用

    最近越发觉得,任何一个系统上线,运维监控都太重要了,本文介绍了SpringBoot可视化监控的具体应用,分享给大家,有兴趣的同学可以参考一下
    2021-06-06
  • mybatis快速入门学习教程新手注意问题小结

    mybatis快速入门学习教程新手注意问题小结

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。接下来通过本文给大家介绍mybatis快速入门学习教程新手注意问题小结,需要的朋友可以参考下
    2017-02-02
  • java多线程中断代码详解

    java多线程中断代码详解

    这篇文章主要介绍了java多线程中断代码详解,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • mybatis if test判断BigDecimal遇到的坑及解决

    mybatis if test判断BigDecimal遇到的坑及解决

    这篇文章主要介绍了mybatis if test判断BigDecimal遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论