封装 getEffectiveLength 方法
function getEffectiveLength(text) {
// 使用正则表达式替换掉所有全角字符,然后获取替换后的字符串长度
var halfWidthLength = text.replace(/[^\x00-\xff]/g, "").length;
// 原始字符串长度减去半角字符所占据的长度,理论上得到的是全角字符的数量
var fullWidthCharsCount = text.length - halfWidthLength;
// 将半角字符当作0.5个字符计算,这里假设text全部为半角字符,则实际字符数为halfWidthLength * 0.5
var halfWidthCharsAsHalf = halfWidthLength * 0.5;
// 合并全角和半角字符的计数
var effectiveLength = fullWidthCharsCount + halfWidthCharsAsHalf;
return effectiveLength;
}
使用
// 示例:
var input = "Hello你好!";
console.log(getEffectiveLength(input)); // 输出:7.5,即5个半角字符加上2个全角字符