打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JavaScript|计算字符串的字节数
问题描述
问题中提到计算字节数,首先需要对字节进行了解,Byte数是一个单位计量数值,其中字符串中单个的字符(英文、数字、特殊字符等)为一个字节,中文汉字是两个字节。
解决方案
1.正则表达式法
由于中英文字符所占字节数不一样,但英文字符字节数和字符长度一致,因此,可以将一个中文字符替换为两个任意英文字符,便能直接用length计数。
因为JS使用Unicode编码,因此,这里用[^\x0000-\x00ff]来匹配中文汉字字符(双字节字符)。
代码如下:
function getBytesLength(str) {
return str.replace(/[^\x0000-\x00ff]/g, '我是xxx').length;
}
2.循环判断计数法
这里依然需要用正则判断为中文字符或英文字符,英文字符计数累加1,中文字符计数累加2。
需要用到JS中的函数:charAt(num) 获取字符串的num位置的字符。
代码如下:
var str='我是xxx';
function BytesCount(str){
var cnt = 0;
for(var i=0; i<str.length; i++){
var c = str.charAt(i);
if(/^[\u0000-\u00ff]$/.test(c)){
cnt++;
}else{
cnt+=2;
}
}
return len;
}
结语
本例中在使用正则表达式时,使用的是匹配双字节字符的[^\x0000-\x00ff],其中也包含中文字符;而专门匹配中文字符的正则表达式是[\u4e00-\u9fa5]。
END主  编   |   王楠岚
责  编   |   wrape
where2go 团队
微信号:算法与编程之美
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
js正则表达式的一些研究,截取两个字符串中间的字符串
C#正则表达式获取guid(亲测完美解决代码)
正则表达式中常用的模式修正符有i、g、m、s、U、x、a、D、e 等。
JavaScript字符串截取 - 燕雀笔记博 - JavaEye技术网站
正则表达式大全
js正则表达式语法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服