var s = '吉林?';s.length; //4用js输出s.length的是4,但是变量s的字符串的个数是3,如何通过代码准确得到变量 s 的字符串个数(3)?
2 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
s.match(/[\s\S]/gu).length
主要是正则表达式u标志符可以匹配4字节 Unicode 编码。
空字符串要处理一下。。。因为 match 返回 null。
正则表达式u是ES6的特性,同样的ES6的字符串迭代器也能正确处理 Unicode 编码:[...s].length等等写法。
我好奇地跑去 babel 测试了一下,发现了这群大触丧病的 hack:
s.match(/[\s\S]/gu)
s.match(/(?:[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g)
添加回答
举报
0/150
提交
取消