字符串的长度获取
可能看到这篇文章的读者会问,这有什么难的,直接使用str.length或者for循环去遍历一遍不就好了,还有必要去专门判断吗?答案当然是肯定的!如若不信,你可以把这个词放在浏览器里边用普通方法跑一下,看是不是你想要的答案——'??'。
发现不对劲以后,其实并非是你的理解问题,而是令人比较麻烦的Unicode字符,它在码点范围0*FFFF里边是中规中矩的,但是一旦超出去,那么就不能使用常规的办法了,需要通过正则匹配修饰符'u'来解决问题。
function strLength(str) {
var result = str.match(/[\s\S]/ug);
return result && result.length;
}
strLength('??'); // 2
还有两种简单的操作,使用到的是ES6扩展操作符和Array.from()方法,它支持对4字节的Unicode字符解析
let str = '??';
console.log([...str].length); // 2
console.log(Array.from(str).length); // 2
注意:以上方法ES6支持,u修饰符为Unicode模式