let str = ' 15556268842 ';
console.warn(str.length); // 13
大家可以复制这个字符串到控制打印下。这个数据是从 excel 表中导出来的,疑似字符串前后各有一个隐藏的字符,但是不占位。。。纳尼?
1
BlackGrasshopper 2018-05-07 11:09:55 +08:00
空格啊,怎么没占位
|
2
zjp 2018-05-07 11:13:04 +08:00 via Android
两个零宽字符 前面有一个 U+202D 后面一个 U+202C
找个小工具检测下字符不就行了 btw U+202D 很好玩… |
3
songz 2018-05-07 11:15:56 +08:00
复制下来,用左右键移动光标,会有两个隐藏的字符,按下左或右光标不会移动
|
4
yuuk OP 很奇怪,发布到 V2EX 后就被解析出空格了。我控制台里面的截图:
![Alt text]( ) |
5
rabbbit 2018-05-07 11:17:42 +08:00
我这输出是 15, chrome
let str = ' 15556268842 '; console.warn(str.length); // 15 |
8
rabbbit 2018-05-07 11:24:51 +08:00
讲个好玩的坑
'𠀀'.length // 2 Array.from('𠀀').length // 1 |
9
lommo 2018-05-07 11:30:10 +08:00
\u0020\u0031\u0035\u0035\u0035\u0036\u0032\u0036\u0038\u0038\u0034\u0032\u0020\u202c
|
10
input2output 2018-05-07 11:49:16 +08:00
键盘 左右移动就感觉到了
|
11
broker 2018-05-07 11:50:34 +08:00
还有一个 U+202E 也比较好玩
this[''&&'alert']`1` |
12
gongzhang 2018-05-07 12:27:39 +08:00
Unicode 字符串长度有多种含义,看你要哪种:
1. 存储字节数 2. UTF8 或 UTF16 编码后的编码单元数 3. Unicode Scala 数 4. 最终显示出来的字符数 |
13
A3m0n 2018-05-07 16:02:45 +08:00 1
|
14
linxiaoziruo 2018-05-07 17:32:22 +08:00
我打印出来 15
|