JavaScript计算字符串实际长度(含汉字)的三种实现方式
本文介绍了在JavaScript中获取包含汉字字符串实际长度的三种方法。通过遍历字符编码判断中英文,利用位运算优化判断逻辑,以及使用正则表达式替换后计算长度。这些方法能有效区分中文占两个字节、英文占一个字节的编码差异,适用于需要精确计算存储或显示长度的场景。
基于Unicode编码遍历的计算方法
第一种方法通过遍历字符串的每个字符,利用charCodeAt获取其Unicode编码值。若编码值在0到128之间,视为英文字符,长度加1;否则视为中文字符,长度加2。该方法逻辑直观,适用于大多数常规场景。
var jmz = {};
jmz.GetLength = function(str) {
///<summary>获得字符串实际长度,中文2,英文1</summary>
///<param name="str">要获得长度的字符串</param>
var realLength = 0, len = str.length, charCode = -1;
for (var i = 0; i < len; i++) {
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128)
realLength += 1;
else
realLength += 2;
}
return realLength;
};
alert(jmz.GetLength('测试测试ceshiceshi));
利用位运算优化的长度计算
第二种方法在遍历过程中采用位运算进行判断。通过检查字符编码与0xff00进行按位与操作的结果是否非零,来区分中英文字符。这种方式在代码执行效率上略有提升,同时保持了逻辑的简洁性。
var l = str.length;
var blen = 0;
for(i=0; i<l; i++) {
if ((str.charCodeAt(i) & 0xff00) != 0) {
blen ++;
}
blen ++;
}
正则表达式替换后的长度获取
第三种方法利用正则表达式进行批量替换。将符合特定Unicode范围(如\u0391至\uFFE5)的中文字符替换为两个英文字符“aa”,然后直接获取替换后字符串的长度。这种方法代码最为简短,适合快速实现长度计算需求。
var jmz = {};
jmz.GetLength = function(str) {
return str.replace(/[\u0391-\uFFE5]/g,"aa").length; //先把中文替换成两个字节的英文,在计算长度
};
alert(jmz.GetLength('测试测试ceshiceshi'));
以上介绍了三种在JavaScript中计算包含汉字字符串实际长度的方法,分别侧重于逻辑直观、执行效率和代码简洁性。开发者可根据具体项目需求选择合适的方式,以确保字符串长度计算的准确性。
JavaScript怎么遍历对象的Symbol键和不可枚举属性
2026-11-05 13:13:39
封装一个健壮的JS字符串判空工具函数
2026-11-05 12:16:14
JavaScript合并数组的三种常用方法:concat、扩展运算符与push
2026-11-05 11:22:29
JavaScript立即执行函数(IIFE)是什么及基本语法
2026-11-05 10:51:19
JS对象数组转字符串为什么推荐用JSON.stringify()
2026-11-05 09:40:31
