js如何计算字符串长度(中文为两个字符)

/ 0评 / 1

在开发ais的过程中遇到一个问题,‘“°”在显示过程中占用了两个字符。所以在光标左右移动的时候不能直接用简单地利用字符索引*字符宽度来移动光标位置。
计算字符串的长度就是一个很好的解决办法了,但是问题是用length这个属性会将中文的字符长度定义为1.这需要开发者自己写个方法来实现中文算两个字符的方法了。这个方法主要利用的是编码值来比较的方式实现。

function getStrLength(str) {
    var len = str.length;
    var result = 0;
    for (var i = 0; i < len; i++) {
        if (str.charCodeAt(i) < 27 || str.charCodeAt(i) > 126) {
            result += 2;
        } else {
            result++;
        }
    }
    return result;
}