问题描述 问题中提到计算字节数,首先需要对字节进行了解,Byte数是一个单位计量数值,其中字符串中单个的字符(英文、数字、特殊字符等)为一个字节,中文汉字是两个字节。 解决方案 1.正则表达式法 由于中英文字符所占字节数不一样,但英文字符字节数和字符长度一致,因此,可以将一个中文字符替换为两个任意英文字符,便能直接用length计数。 因为JS使用Unicode编码,因此,这里用[^\x0000-\x00ff]来匹配中文汉字字符(双字节字符)。 代码如下:
2.循环判断计数法 这里依然需要用正则判断为中文字符或英文字符,英文字符计数累加1,中文字符计数累加2。 需要用到JS中的函数:charAt(num) 获取字符串的num位置的字符。 代码如下:
结语 本例中在使用正则表达式时,使用的是匹配双字节字符的[^\x0000-\x00ff],其中也包含中文字符;而专门匹配中文字符的正则表达式是[\u4e00-\u9fa5]。 主 编 | 王楠岚 责 编 | wrape where2go 团队 |
|