问题描述
大概业务逻辑如下;
接收导入的excel数据,里面有个string类型的字段a,再用a去查询外部接口,但是一直报错,业务那边又说excel数据a没有问题
String a
// 接收excel数据逻辑
.......
// 去除空格
a.trim()
// 查询,一直返回false
query(a)
原因分析:
查询日志发现是因为空格导致的,但是已经使用了trim(),把报错的参数粘贴到idea中,找到了问题。
1.11NBSP
java的trim()方法无法去除NBSP字符码(Unicode编码为\u00A0)。
解决方案:
为了去除字符串中的所有空白字符,包括NBSP,使用正则表达式来替换它们。
public String removeAllSpaces(String input) {
// 正则表达式匹配所有空格字符,包括普通空格和NBSP
String replaced = input.replaceAll("\\s", "");
// 如果需要,可以将NBSP替换为空字符串(如果不需要移除NBSP,则不需要此步骤)
replaced = replaced.replace(String.valueOf((char) 160), "");
return replaced;
}