记一次踩坑:ASCII码为160的不间断空格(non-breaking space)的处理

在处理某次excel导入的线上问题过程中,用户反馈某条数据的两个数字内容在导入之后的数据不正常,该数据的这两个字段值未导入库。(库中为默认的0)

拿到该用户导入的excel进行本地debug,发现在String.valueOf()转字符串的时候这两个参数的值发生了NumberFormartException(至今我也没明白为啥会抛出这个异常)。忽略这个问题,在debug过程中发现该数字字符串的最后有一个空格符,该空格符在char数组中的显示其ASCII码为160,这就觉得不对劲,正常的空格的ASCII码应该是32,这样就可以通过trim()方法将其过滤。但是该空格无法使用trim方法将其过滤。然后查阅相关资料,知道ASCII码为160的空格名为non-breaking space(不间断空格),该空格的作用是保证在页面换行时不被打断。例如:

页面某一行的末尾是一个人名Li Si;

我们希望在换行时人名不会被打断,导致Zhang 在第一行末尾,而Xiaoming跑到第二行开头,而是保持完整的人名在同一行的末尾,于是就有了不间断空格。(在word中也有这种空格的使用)

如果使用了平常的空格,就会被页面压缩,变成下边这样:

页面某一行的末尾是一个人名Li

Si

解决方式:

str.replaceAll("[\\s\\u00A0]+", "");
str.replace("\u00A0", "");

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值