js 获取字符长度的一些简单代码示例

  • Post author:
  • Post category:其他


注释和代码一一对应,请阅读注释。

/*
涉及到的方法:
    charCodeAt()  返回在指定的位置的字符的 Unicode 编码。返回值是 0 - 65535 之间的整数。
    charAt()  返回在指定位置的字符。
    escape()  函数可对字符串进行编码
*/

// js获取字符串长度
// 问题点:中英文不区分字节,结果是字符长度
let str="a长度";
console.log(str.length);  // 3

// 如果要统计字符串的字节长度,
// 可以先检测字符是单字节还是双字节,再计算长度
// 方法1-根据字符编码-检测字符是否为双字节或单字节
let len=0;
for(let i=0;i<str.length;i++){
  str.charCodeAt(i)<256?(len+=1):(len+=2);
}
console.log(len);  // 5

// 如果要统计字符串的字节长度,
// 可以先计算字符是单字节还是双字节,再计算长度
// 方法2-用charAt和escape-检测字符是否为双字节或单字节
len=0;
for(let i=0;i<str.length;i++){
  if (escape(str.charAt(i)).length > 4) {
        len += 2;
    } else if (str.charAt(i) != "\r") {
        len ++; 
    }
}
console.log(len);  // 5

// 如果要统计字符串的字节长度,
// 可以先计算字符是单字节还是双字节,再计算长度
// 方法3-用正则表达式-检测字符是否为双字节或单字节
len=0;
for(let i=0;i<str.length;i++){
  if (/^[\u0000-\u00ff]$/.test(str.charAt(i))) {
        len ++;
    } else {
        len += 2;
    }
}
console.log(len);  // 5



版权声明:本文为xijinno1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。