V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
yuuk

遇到一个很诡异的字符串问题!

  •  
  •   yuuk · May 7, 2018 · 6798 views
    This topic created in 2922 days ago, the information mentioned may be changed or developed.
    let str = '‭ 15556268842 ‬';
    console.warn(str.length); // 13
    

    大家可以复制这个字符串到控制打印下。这个数据是从 excel 表中导出来的,疑似字符串前后各有一个隐藏的字符,但是不占位。。。纳尼?

    14 replies    2018-05-07 17:32:22 +08:00
    BlackGrasshopper
        1
    BlackGrasshopper  
       May 7, 2018
    空格啊,怎么没占位
    zjp
        2
    zjp  
       May 7, 2018 via Android
    两个零宽字符 前面有一个 U+202D 后面一个 U+202C
    找个小工具检测下字符不就行了
    btw U+202D 很好玩…
    songz
        3
    songz  
       May 7, 2018
    复制下来,用左右键移动光标,会有两个隐藏的字符,按下左或右光标不会移动
    yuuk
        4
    yuuk  
    OP
       May 7, 2018
    很奇怪,发布到 V2EX 后就被解析出空格了。我控制台里面的截图:
    ![Alt text]( )
    rabbbit
        5
    rabbbit  
       May 7, 2018
    我这输出是 15, chrome
    let str = '‭ 15556268842 ‬';
    console.warn(str.length); // 15
    yuuk
        6
    yuuk  
    OP
       May 7, 2018
    @rabbbit 去掉那两个可见的占位空格
    rabbbit
        7
    rabbbit  
       May 7, 2018
    @yuuk520 那就是 13 呀,F12 可以看到前后各有一个隐藏字符
    rabbbit
        8
    rabbbit  
       May 7, 2018
    讲个好玩的坑
    '𠀀'.length // 2
    Array.from('𠀀').length // 1
    lommo
        9
    lommo  
       May 7, 2018
    \u0020\u0031\u0035\u0035\u0035\u0036\u0032\u0036\u0038\u0038\u0034\u0032\u0020\u202c
    input2output
        10
    input2output  
       May 7, 2018
    键盘 左右移动就感觉到了
    broker
        11
    broker  
       May 7, 2018
    还有一个 U+202E 也比较好玩

    this['‮'&&'alert']`1`
    gongzhang
        12
    gongzhang  
       May 7, 2018
    Unicode 字符串长度有多种含义,看你要哪种:
    1. 存储字节数
    2. UTF8 或 UTF16 编码后的编码单元数
    3. Unicode Scala 数
    4. 最终显示出来的字符数
    A3m0n
        13
    A3m0n  
       May 7, 2018   ❤️ 1
    https://i.loli.net/2018/05/07/5af007deb6e4f.gif

    做了个 gif,注意光标位置以及下方的列数。
    linxiaoziruo
        14
    linxiaoziruo  
       May 7, 2018
    我打印出来 15
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5621 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 03:49 · PVG 11:49 · LAX 20:49 · JFK 23:49
    ♥ Do have faith in what you're doing.