字符串的长度获取

字符串的长度获取

可能看到这篇文章的读者会问,这有什么难的,直接使用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模式

posted @ 2018-10-29 16:53  歆轶  阅读(597)  评论(0编辑  收藏  举报