问题定位总结:java空字符

在线上业务中,有个校验,校验用户输入的信息与现在表里存的信息数据是否一致。比较时忽略首尾的空字符。

但收到用户反馈,在页面填入的数据和表里存的数据一致。校验却不通过。

假设表里存的是“CSDN专业开发者社区”,用户填写的是“CSDN专业开发者社区   ”,后面带有空格。对于用户输入的数据,已经先用String的trim()方法进行处理了再和表里的数据进行比较。但比较结果却是不相等。把后台日志用户的数据复制粘贴到记事本或者word或者页面,没有发现异常,比如在CSDN插入代码:

public static void main(String[] args) {
   String str = "CSDN专业开发者社区   ";
}

但当把数据粘贴到idea上时,结果如下:

打印字符ASCII码,结果如下:

断点String的trim()方法,发现字符的ASCII码小于等于32,末尾的字符才会被过滤掉。而用户输入的空格ASCII码等于160,所以调用trim()方法后字符被保留。

通过打印每个字符的unicode,发现末尾的空格unicode是\u00a0。

\u00a0是不间断空格,常用的String的trim()方法或者StringUtils.trim()方法无法处理,可以通过

replaceAll("\u00A0"," ")替换为普通空格,再用trim()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值