JavaScript和Java求字符串的字节长度

Java中的写法:

public static void main(String[] args){

   System.out,println("长度: " + "ab你好32hg".getBytes().length);

}

 

JavaScript中的写法:

(1)Js要写函数调用: (c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)范围的为单字节

函数如下
/
//   判断长度是否合格
//
// 引数 s   传入的字符串
//           n   限制的长度n以下
//
// 返回值 false   NG
//           true    OK
/
function WidthCheck(s, n){
var w = 0;
for (var i=0; i<s.length; i++) {
   var c = s.charCodeAt(i);
   //单字节加1
   if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
    w++;
   }
   else {
    w+=2;
   }
}
if (w > n) {
   return false;
}
return true;
}

(2)function strlen(str) {  //在IE8 兼容性模式下 不会报错   

      var s = 0;   

      for(var i = 0; i < str.length; i++) {   

        if(str.charAt(i).match(/[\u0391-\uFFE5]/)) {   

            s += 2;      

        } else {   

            s++;   

        }   

    }   

    return s;   

  }  

(3)

『^\x00-\xff』:\xnum用来匹配num,num为ASCII编码的十六进制转义,这里表达式ASCII编码不在0-255之间的字符.

后面的g表式全局匹配,替换的字符"xx"没有意义,只是为了计算长度用的。

str.replace(/[^\x00-\xff]/g, 'xx').length;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值