要获取字符串实际长度(包含汉字),必须考虑到汉字所占的长度和编码,下面详细介绍一下获取字符串实际长度的方法。
方法一:使用正则表达式和charCodeAt()方法计算汉字转义编码长度
该方法使用正则表达式以及charCodeAt()方法来获取字符串的实际长度,步骤如下:
- 定义一个字符串变量,比如str,用于存储待处理的字符串。
- 初始化2个计数器,cbis:字符宽度,count:字符串总长度。
- 创建一个循环,遍历字符串的每一个字符,计算字符的宽度, 如果是汉字,宽度为2,其它字符宽度为1。
- 将每个字符的宽度累加到cbis计数器中,并计算出当前字符串的实际长度。
- 返回字符串的实际长度值。
示例代码如下:
function getRealLength(str) {
var cbis = 0;
var count = 0;
for (var i = 0, len = str.length; i < len; i++) {
var chr = str.charAt(i);
var width = /[\u0391-\uFFE5]/.test(chr) ? 2 : 1;//使用正则表达式匹配汉字和其他字符
cbis += width;
count += 1;
}
return count + (cbis - count) / 2; //根据字符宽度计算实际长度
}
//测试代码:
var str1 = "hello world";
var str2 = "你好,世界!";
console.log(getRealLength(str1)); // 11
console.log(getRealLength(str2)); // 10.5
方法二:使用ES6中的Array.from()方法和for...of循环遍历字符串并计算长度
该方法使用ES6新特性Array.from()方法和for...of循环遍历字符串并计算长度,步骤如下:
- 定义一个字符串变量,比如str,用于存储待处理的字符串。
- 将字符串转换为一个数组,并使用for...of循环遍历数组,计算宽度并统计字符串的总长度。
- 返回字符串的实际长度值。
示例代码如下:
function getRealLength(str) {
var count = 0;
for (let ch of Array.from(str)) { //使用ES6的Array.from()方法和for...of语句遍历字符串
var width = /[\u0391-\uFFE5]/.test(ch) ? 2 : 1; //使用正则表达式匹配汉字和其他字符
count += width;
}
return count;
}
//测试代码:
var str1 = "hello world";
var str2 = "你好,世界!";
console.log(getRealLength(str1)); // 11
console.log(getRealLength(str2)); // 10
以上两种方法可以准确地获取字符串的实际长度,适用于所有包含汉字或其他非ASCII字符的字符串。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS获取字符串实际长度(包含汉字)的简单方法 - Python技术站