js计算字符串字节长度

function byteLength(str) {
	var byteLen = 0, len = str.length;
	if( !str ) return 0;
	for( var i=0; i<len; i++ )
		byteLen += str.charCodeAt(i) > 255 ? 2 : 1;
	return byteLen;
}
在 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值