问题描述:
输入: 相同长度数字
打印: 各自长度,长度不一,是何原因~
运行环境: chrome浏览器
代码:
//手机号随机出入,非真实数据,如有雷同,纯属巧合
var as = '?15312345678';
var bs = '15369081234';
var cs = '15369998866';
var ds = '15283031646';
var es = '?15319317862?';
console.log(as.length,bs.length,cs.length,ds.length,es.length);
console.log(as.split(''),bs.split(''),cs.split(''),ds.split(''),es.split(''))
运行截图:
Zero-Width space
###肯定是字符串中了包含不可见字符
更新:
题主回复想知道为什么,我仔细看了一下:
先声明一下,这里多出来的字符 不是 0宽空格(Zero Width Space)。
as 字符串中,第一个字符是 \xe2\x80\xad
;
es 字符串中,第一个字符是 \xe2\x80\xad
,最后一个字符是 \xe2\x80\xac
其中 \xe2\x80\xad
是 Unicode U+202D
的 UTF-8 编码,含义是 LEFT-TO-RIGHT OVERRIDE
;\xe2\x80\xac
是 Unicode U+202C
的 UTF-8 编码,含义是 POP DIRECTIONAL FORMATTING
所以,这里多出来的字符是 Unicode 的控制字符,具体含义题主可自行搜索
顺便一提,Zero Width Space 的 Unicode 为 U+200B
,UTF-8 编码是 \xe2\x80\x8b
至于为什么出现这些控制字符,不得而知,猜测为题主的数据是从一些带格式的文档中提取出来的,而使用的 正则或者其它方式 有错误,导致提取的数据带有控制字符
######'?15312345678'
这个前面是有一个空格的。。不信自己删除试试!
'?15319317862?'
至于这个。。前后各有一个空格!