怎样判断字节数?

时间:2023-01-09 23:24:49
提交富文本表单(源代码,包含半角单双引号、斜线等),得到变量forml,怎样得到该变量的字节数?forml.length无效。

5 个解决方案

#1


楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10

#2


引用 1 楼 bobbyworm 的回复:
楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10
最主要的还不是全角半角,而是怎样得到!如果你的例子里的字符串变为【中/文"1"2'3'a,b<>=c】甚至是比这还复杂的源代码,还能得到字节数吗?

#3


引用 2 楼 chate 的回复:
Quote: 引用 1 楼 bobbyworm 的回复:

楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10
最主要的还不是全角半角,而是怎样得到!如果你的例子里的字符串变为【中/文"1"2'3'a,b<>=c】甚至是比这还复杂的源代码,还能得到字节数吗?


不管内容多复杂,只要是个字符串变量,当然能得到长度。
还是没太明白你想要的是什么,你说的字节数指什么?

#4


引用 3 楼 bobbyworm 的回复:
Quote: 引用 2 楼 chate 的回复:

Quote: 引用 1 楼 bobbyworm 的回复:

楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10
最主要的还不是全角半角,而是怎样得到!如果你的例子里的字符串变为【中/文"1"2'3'a,b<>=c】甚至是比这还复杂的源代码,还能得到字节数吗?


不管内容多复杂,只要是个字符串变量,当然能得到长度。
还是没太明白你想要的是什么,你说的字节数指什么?

是这句:var s = '中文123abc';
如果字符串内容很复杂,是源代码的话就会有问题,比如:var s = '中/文"1"2'3'a,b<>=c';//这样是得不到长度的!
不过,用一个变量表示就不要紧了。

#5


引用 4 楼 chate 的回复:
Quote: 引用 3 楼 bobbyworm 的回复:

Quote: 引用 2 楼 chate 的回复:

Quote: 引用 1 楼 bobbyworm 的回复:

楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10
最主要的还不是全角半角,而是怎样得到!如果你的例子里的字符串变为【中/文"1"2'3'a,b<>=c】甚至是比这还复杂的源代码,还能得到字节数吗?


不管内容多复杂,只要是个字符串变量,当然能得到长度。
还是没太明白你想要的是什么,你说的字节数指什么?

是这句:var s = '中文123abc';
如果字符串内容很复杂,是源代码的话就会有问题,比如:var s = '中/文"1"2'3'a,b<>=c';//这样是得不到长度的!
不过,用一个变量表示就不要紧了。


大概猜到了你的意思,是这样吗?

<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<input type="text" id="t" value="中文\\123\'abc\'" />
<script type="text/javascript">
var t1 = t.value;
alert(t1); //中文\\123\'abc\'
alert(t1.length); //14

var t2 = eval('"' + t.value + '"');
alert(t2); //中文\123'abc'
alert(t2.length); //11
</script>
</body>
</html>

#1


楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10

#2


引用 1 楼 bobbyworm 的回复:
楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10
最主要的还不是全角半角,而是怎样得到!如果你的例子里的字符串变为【中/文"1"2'3'a,b<>=c】甚至是比这还复杂的源代码,还能得到字节数吗?

#3


引用 2 楼 chate 的回复:
Quote: 引用 1 楼 bobbyworm 的回复:

楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10
最主要的还不是全角半角,而是怎样得到!如果你的例子里的字符串变为【中/文"1"2'3'a,b<>=c】甚至是比这还复杂的源代码,还能得到字节数吗?


不管内容多复杂,只要是个字符串变量,当然能得到长度。
还是没太明白你想要的是什么,你说的字节数指什么?

#4


引用 3 楼 bobbyworm 的回复:
Quote: 引用 2 楼 chate 的回复:

Quote: 引用 1 楼 bobbyworm 的回复:

楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10
最主要的还不是全角半角,而是怎样得到!如果你的例子里的字符串变为【中/文"1"2'3'a,b<>=c】甚至是比这还复杂的源代码,还能得到字节数吗?


不管内容多复杂,只要是个字符串变量,当然能得到长度。
还是没太明白你想要的是什么,你说的字节数指什么?

是这句:var s = '中文123abc';
如果字符串内容很复杂,是源代码的话就会有问题,比如:var s = '中/文"1"2'3'a,b<>=c';//这样是得不到长度的!
不过,用一个变量表示就不要紧了。

#5


引用 4 楼 chate 的回复:
Quote: 引用 3 楼 bobbyworm 的回复:

Quote: 引用 2 楼 chate 的回复:

Quote: 引用 1 楼 bobbyworm 的回复:

楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:

String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};

var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10
最主要的还不是全角半角,而是怎样得到!如果你的例子里的字符串变为【中/文"1"2'3'a,b<>=c】甚至是比这还复杂的源代码,还能得到字节数吗?


不管内容多复杂,只要是个字符串变量,当然能得到长度。
还是没太明白你想要的是什么,你说的字节数指什么?

是这句:var s = '中文123abc';
如果字符串内容很复杂,是源代码的话就会有问题,比如:var s = '中/文"1"2'3'a,b<>=c';//这样是得不到长度的!
不过,用一个变量表示就不要紧了。


大概猜到了你的意思,是这样吗?

<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<input type="text" id="t" value="中文\\123\'abc\'" />
<script type="text/javascript">
var t1 = t.value;
alert(t1); //中文\\123\'abc\'
alert(t1.length); //14

var t2 = eval('"' + t.value + '"');
alert(t2); //中文\123'abc'
alert(t2.length); //11
</script>
</body>
</html>