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;
}
// 判断长度是否合格
//
// 引数 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;