需求
最近在做一个Excel数据处理工具时发现,总是有些无效字符干扰,比如:不间断空格,制表符等。
所以,记录下遇到的无效字符,以便后续处理时统一过滤。
实现
- 获取表格内容,并将格式转换为文本格式:
row.getCell(0);
cell.setCellType(CellType.STRING);
- 最简单的过滤,将首尾的空白字符去掉:
cell.getStringCellValue().trim();
- 去掉所有空格(半角空格,全角空格,不间断空格):
cell.getStringCellValue().trim()
.replaceAll("[\\u0020\\u3000\u00A0]" ,"");
- 去掉所有空白字符,包括:空格符,制表符,回车符,换行符等:
cell.getStringCellValue().trim()
.replaceAll("[\\u0020\\u3000\u00A0]" ,"")
.replaceAll("\\s" ,"");
- 至此,可以过滤掉几乎所有的无效字符。以上可以总结为:
cell.getStringCellValue()
.replaceAll("[\\s\\u3000\u00A0]" ,"");
名词解释
- 不间断空格(Non-breaking Space, 简称 nbsp):主要用在office中, 让一个单词词组在结尾处不会换行显示, 快捷键是 ctrl + shift + space。
- 制表符:使你输出的内容为4的倍数。如果输出字符串"a\t",那么,会在输出a之后再输出3个空格,如果输出字符串aaaa\t,则会在输出4个a后,再输出四个空格。制表符相当于tab键。
- trim() 方法用于删除字符串的头尾空白符。包括空格,换行符和回车符。
- 全角空格:它对应的十六进制unicode码是\u3000,相当于两个半角空格的长度。