问答

谷歌浏览器输入若干相同长度字符串,输出长度不一致

作者:admin 2021-09-09 我要评论

问题描述: 输入: 相同长度数字 打印: 各自长度,长度不一,是何原因~ 运行环境: chrome浏览器 代码: //手机号随机出入,非真实数据,如有雷同,纯属巧合 var a...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

问题描述:
输入: 相同长度数字
打印: 各自长度,长度不一,是何原因~
运行环境: 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(''))

运行截图:
image.png

###

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

至于为什么出现这些控制字符,不得而知,猜测为题主的数据是从一些带格式的文档中提取出来的,而使用的 正则或者其它方式 有错误,导致提取的数据带有控制字符

###

image.png

###
'?15312345678'

这个前面是有一个空格的。。不信自己删除试试!

'?15319317862?'

至于这个。。前后各有一个空格!

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 谷歌浏览器输入若干相同长度字符串,输

    谷歌浏览器输入若干相同长度字符串,输

  • JS递归生成antd tree树形数据

    JS递归生成antd tree树形数据

  • vue ie11下兼容问题

    vue ie11下兼容问题

  • 小程序如何去掉默认滚动条,不是去掉sc

    小程序如何去掉默认滚动条,不是去掉sc

腾讯云代理商
海外云服务器