js获取一个字符串的字节长度

JavaScript015

js获取一个字符串的字节长度,第1张

因为中文字占两个字节,英文占一个字节。

方法1:把中文字替换成两个字母。然后计算长度。

方法2:直接判断中文,长度+2。

运用的方法大同小异。都是通过正则表达式,写unicode编码。

方法1中

[\u4e00-\u9fa5]:匹配中文字符

[^\x0000-\x00ff]:匹配双字节字符(包括中文字)

正则表达示 /[\u4e00-\u9fa5]/g 的 g 必须要,global,全部都要检查的意思。没有的话输出的是(2333aa哈)

方法2中的函数

扩展:

JS获取字符串字母个数,方法是:使用属性“.length”。

详细的操作步骤如下:

1、首先,创建一个新的HTML文档并创建一个<script>标签,如下图所示。

2、其次,声明一个变量并分配一个字符串,如下图所示。

3、接着,使用.length属性获取字符串长度,如下图所示。

4、然后,以弹出窗口的形式打印获得的字符串长度,如下图所示。

5、最后,保存文件并查看通过.length获得的结果,如下图所示。这样,就实现了获取一个字符串中字母的个数的功能了。

1.substr方法返回一个从指定位置开始的指定长度的子字符串。stringvar.substr(start[,length])参数stringvar必选项,要提取子字符串的字符串文字或String对象。start必选项,所需的子字符串的起始位置。字符串中的第一个字符的索引为0。length可选项,在返回的子字符串中应包括的字符个数。说明,如果length为0或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到stringvar的最后。示例下面的示例演示了substr方法的用法。functionSubstrDemo()...{vars,ss//声明变量。vars="TheraininSpainfallsmainlyintheplain."ss=s.substr(12,5)//获取子字符串。return(ss)//返回"Spain"。}2.substring方法返回位于String对象中指定位置的子字符串。strVariable.substring(start,end)"StringLiteral".substring(start,end)参数start指明子字符串的起始位置,该索引从0开始起算。end指明子字符串的结束位置,该索引从0开始起算。说明substring方法将返回一个包含从start到最后(不包含end)的子字符串的字符串。substring方法使用start和end两者中的较小值作为子字符串的起始点。例如:strvar.substring(0,3)和strvar.substring(3,0)将返回相同的。3.正确截取单字节和双字节混和字符串的方法<scripttype="text/javascript">/*************************************************************Author:[email protected]>Url: http://www.yitu.orgDescription:正确截取单字节和双字节混和字符串Stringstr:要截取的字符串Number:截取长度*************************************************************/functionsubstr(str,len){if(!str||!len){return''}//预期计数:中文2字节,英文1字节vara=0//循环计数vari=0//临时字串vartemp=''for(i=0i<str.lengthi++){if(str.charCodeAt(i)>255){//按照预期计数增加2a+=2}else{a++}//如果增加计数后长度大于限定长度,就直接返回临时字符串if(a>len){returntemp}//将当前内容加到临时字符串temp+=str.charAt(i)}//如果全部是单字节字符,就直接返回源字符串returnstr}varstr="呵呵he哈哈嘿嘿and"document.write("字符串:<fontcolor='red'>"+str+"</font><br/><br/>")document.write("javascript默认截取10个字节的返回值:<br/>")document.write("<fontcolor='red'>"+str.substr(0,10)+"</font><br/><br/>")document.write("用本文介绍的方法截取10个字节的返回值:<br/>")document.write("<fontcolor='red'>"+substr(str,10)+"</font><br/><br/>")document.write("截取9个字节的返回值:<br/>")document.write("<fontcolor='red'>"+substr(str,9)+"</font><br/><br/>")</script>还有更简单的方法(正则)<script>a="中文测试"b="51js.com"functiondd(str,c){document.write(str.replace(/([\u0391-\uffe5])/ig,'$1a').substring(0,c).replace(/([\u0391-\uffe5])a/ig,'$1')+"<br/>")}dd(a,8)dd(b,8)</script>