首页 >> 大全

【已解决】Java 中导入excel时使用 trim() 无法去除空格的解决方法

2023-09-30 大全 24 作者:考证青年

使用trim无法去除空格的解决方法 四、总结

一、问题描述

在excel导入操作时,读取cell中的字符串时,获取到了cell中的字符串后,通过的trim()方法去掉前后的空格,发现如论如何也去不掉。

二、原因分析

摸索一段时间后发现,是输入法的全角和半角空格的原因,trim()方法只能去掉字符串中的ASCII值为32的空格,即半角的空格,无法去除全角的空格。

也就是说,trim或者只能去掉ASCII值为32的空格,而ASCII值为160或全角的空格是无法通过或者trim处理的

全角空格:有的称呼为 中文空格 ; 半角空格:有的称呼为 英文空格。

例如:

开启全角后,输入法内容是这样的:abcd

半角输入是这样的:abcd ,输入法,默认都是半角的。

如何把空格去掉又保留文本_空格去不掉_

切换全半角的方式:shift+space

三、解决方案 方案一:使用正则表达式

ASCII编码是160的空格,对应是\u00A0,使用+编码\u00A0替换,全角空格(\u3000),使用方法+全角空格字符替换,普通空格,使用方法+\s替换,正则表达式.(“([]|\s|\u00A0)+”,“”)

如下:


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

方案二:使用.strip()

我这里的问题是全角空格导致的,所以可以使用.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 3System.out.println(s3.strip());// "吃了没"}

注意: JDK11中引入.strip(),如果你的项目是用的JDK11以下的环境,是用不了该方法的。

方案三:使用 的 .trim()方法

可以使用 提供的工具类 .() 去除 字符串中的全角空格

代码如下:

/**@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的 StrUtilSystem.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 去除普通半角空格* 
半角空格=英文空格; 全角空格=中文空格*/
@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的类中的trim方法,只能去除 半角空格,遇到空格去不掉的情况,可能的全角空格,可以考虑使用或者提供的工具类试试。

2、 的pom依赖是:

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.18</version>
</dependency>

注意:--lang3 里的工具类,无法去除全角空格,原因是:实际调用的是 类的trim()方法。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了