1、场景描述
目前做一款教育软件涉及到文本解析需要读取txt文件中的文本,然后按照用空格进行筛选。
然鹅,读取字符串后使用空格对字符串进行分割时,遇到了个别空格不能识别的问题。
2、问题拓展
- 无间断空格 U+00A0 到底是用来干什么的?
- 就是我们所谓的“假”的空格,能被用作文件名的空格,使用word编辑文本时可以使用ctrl+shift+space来输入无间断空格。
The non-breaking space (U+00A0 Unicode, 160 decimal, ) is not the same as the space character (U+0020 Unicode, 32 decimal). Well, both of them seems to be a “space”, but they are absolutely different characters.
- 无间断空格和普通的空格符unicode编码不同,虽然他们在显示上都是正常的空格符,但是他们编码不同导致你在对包含空格的值进行排序、筛选或者搜索时识别失败无法正确匹配,所以需要把数据源中无间断空格U+00A0全部替换成普通空格U+0020。
3、问题解决
- 建议在后端采用正则替换成统一字符,如下
var s = ' ' // 假设这里是一个160的空格。
var reg = new RegExp(String.fromCharCode(160),"gm");
var 32sp = String.fromCharCode(32)
s = s.replace(reg, 32sp);
网友评论