今天同事用excel导入了数据,系统提示了:
行: 3 列:7的金额数据必须是数字,当前值是【700 】
很明显700后多了个空格。
于是我加入了trim();
data = trimAnyBlank(data); if (!StringUtil.isNumber(data)) { throw new ValidateBusinessException(Constant.SUB_SYSTEM, ErpExceptionType.VBE23005, "行: " + (rowIndex+1) + " 列:" + (columnIndex+1) + "的金额数据必须是数字,当前值是【"+data+"】\""); }
结果还是相同的错误,于是我怀疑是制表符 \t
然后用正则替换\t 发现还是替换不掉。
最后用了一个特殊的替换方法。不过依赖了Guava包
public static String trimAnyBlank(String str) { if (null != str) { return CharMatcher.anyOf("\r\n\t \u00A0 ").trimFrom(str); } return str; }
终于替换掉了。
hutool群里的大佬对我说了一句话,
估计就这个原因造成的。