JavaScript 计算汉字和英文字符的长度

本文介绍了一个使用JavaScript编写的简单函数,该函数用于计算字符串的长度,其中汉字被计算为两个字符。通过一个示例展示了如何使用此函数。

 

<script language="javascript">
<!--
// 计算字符串的长度,汉字占两个字符
function StringLength(str)
{
    // replace将符合此正则的字符串替换成指定字符 然后在计算长度
    return str.replace(/[^/x00-/xff]/g,"**").length
}
alert(StringLength("365天天好心情!"));
//-->
</script>  

JavaScript 中,计算字符长度有多种方法,以下是一些常见的方式: ### 直接使用 `length` 属性 这是最基本的方法,可直接返回字符串中字符的数量,不过对于一些特殊字符(如表情符号)可能无法准确计算真实长度。 ```javascript const str = '繁华的地方'; console.log(str.length); ``` ### 考虑中文字符特殊字符计算 在一些场景中,中文字符特殊字符需要特殊处理。 #### 区分中文英文宽度 在计算字符串展示在页面中的真实宽度时,由于一个中文字符的间距约等同于两个英文字符的宽度,可使用以下方法: ```javascript /** * 计算显示的字符串 * @param {string} str 要裁剪的字符串 * @param {number} maxWidth 最大宽度 * @param {number} fontSize 字体大小 * @return {string} 显示的字符串 */ const fittingString = (str, maxWidth, fontSize = 12) => { str = (str || '').toString(); const fontWidth = fontSize * 1.2; const maxLen = Math.floor(maxWidth / fontWidth * 2); let strLen = 0; for (let i = 0; i < str.length; i++) { if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) { strLen++; } else { strLen += 2; } if (strLen > maxLen) { return str.substring(0, i - 1) + '...'; } } return str; }; ``` 此方法根据字符串的长度容器宽度,判断是否需要在字符串后拼接省略号展示[^2]。 #### 精确计算包含特殊字符字符长度 在处理包括中文字符、表情符号颜文字等多种字符类型时,可使用高精度计算方法。例如,使用正则表达式替换中文为两个字符计算长度: ```javascript const str = '你认为的长度我认为的长度一直嘛123'; console.log(str.length); console.log(str.toString().replace(/[\u0391-\uFFE5]/g, "aa").length); ``` 这种方法能更精确地计算包含多种字符类型的字符长度[^3]。 #### 计算包含中文的字符串字节长度 如果需要计算包含中文的字符串字节长度,可使用以下函数: ```javascript // 计算字符长度包含中文 function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { var a = val.charAt(i); if (a.match(/[^\x00-\xff]/ig) != null) { len += 2; } else { len += 1; } } return len; } ``` 该函数会遍历字符串中的每个字符,根据字符是否为非 ASCII 字符来确定其字节长度[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值