楼主是想按全角两个字节,半角一个字节计算长度吗?如果是这个意思的话可以这样做:String.prototype.length2 = function () {
return this.replace(/[^\x00-\xff]/g, '..').length;
};var s = '中文123abc';
alert(s.length); //8
alert(s.length2()); //10

解决方案 »

  1.   

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

  2.   


    不管内容多复杂,只要是个字符串变量,当然能得到长度。
    还是没太明白你想要的是什么,你说的字节数指什么?
    是这句:var s = '中文123abc';
    如果字符串内容很复杂,是源代码的话就会有问题,比如:var s = '中/文"1"2'3'a,b<>=c';//这样是得不到长度的!
    不过,用一个变量表示就不要紧了。
      

  3.   


    不管内容多复杂,只要是个字符串变量,当然能得到长度。
    还是没太明白你想要的是什么,你说的字节数指什么?
    是这句: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); //14var t2 = eval('"' + t.value + '"');
    alert(t2); //中文\123'abc'
    alert(t2.length); //11
    </script>
    </body>
    </html>