JavaScript|计算字符串的字节数

简介: 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]

目录
相关文章
|
10天前
|
JavaScript 前端开发
|
1月前
|
JavaScript 前端开发
JS几种拼接字符串的方法
JS几种拼接字符串的方法
47 1
|
2月前
|
JavaScript
js计算时间差,包括计算,天,时,分,秒
js计算时间差,包括计算,天,时,分,秒
244 16
|
3月前
|
存储 JavaScript 前端开发
JS上传文件(base64字符串和二进制文件流)
这篇文章介绍了两种JavaScript文件上传的方法:使用FileReader对象将文件读取为base64字符串上传,以及使用FormData对象以二进制文件流的形式上传文件,包括如何处理文件选择、读取和上传的详细代码示例。
431 2
JS上传文件(base64字符串和二进制文件流)
|
2月前
|
JavaScript
js 解析 byte数组 成字符串
js 解析 byte数组 成字符串
68 5
|
1月前
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器
22 1
|
1月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
40 3
|
2月前
|
JavaScript 前端开发
javascript创建字符串
javascript创建字符串
|
2月前
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
1月前
|
缓存 JavaScript 前端开发
深入理解Vue.js中的计算属性与侦听属性
【10月更文挑战第5天】深入理解Vue.js中的计算属性与侦听属性
22 0