String.prototype.lenB = function(){return this.replace(/[^\x00-\xff]/g,"**").length;}alert(bk.Worksheets(1).Cells(i,4).value.lenB())

解决方案 »

  1.   

    好像不行啊,
    String.prototype.lenB = function(){return this.replace(/[^\x00-\xff]/g,"**").length;}
    是什么意思啊
      

  2.   

    报alert(bk.Worksheets(1).Cells(i,4).value.lenB())对象不支持此属性或方法
      

  3.   

    alert(bk.Worksheets(1).Cells(i,4).value.toString().lenB()); //这样呢
      

  4.   

    String.prototype.lenB() = function(){return this.replace(/[^\x00-\xff]/g,"**").length;}alert(bk.Worksheets(1).Cells(i,4).value.lenB())
    加个括号这样试下
      

  5.   

    SORRY我上面说的是错的,不能给函数返回值赋值
      

  6.   

    谢谢各位:
    这样可以了alert(bk.Worksheets(1).Cells(i,4).value.toString().lenB()); 
    但是不明白是什么意思
      

  7.   

    你的 .value 返回的不是 string 型,所以加了 toString() 转换成 string
    我扩充的 lenB 方法 只是给 string 型对象扩充的,
      

  8.   

    如果是转换成string,这个怎么又不能用
    function CheckSuccess(success,xlong){
         var ch = success.toString().lenB().charAt(i);
    }
    报不支持此属性或方法.
    这个是上面调用此函数,用以检查从Excel中提取的字符串是否符合要求
    谢谢
      

  9.   

    请 meizz(梅花雪) 再看看, this.replace(/[^\x00-\xff]/g,"**")大概的意思是用*号替代吗,不知道我说的对不对,但是我[^\x00-\xff]是什么意思我还不知道,还有个g,
      

  10.   

    这个是正则表达式,匹配ASCII码大于256的字符串,并将这些字符替换成**,这样即长度的时候就会算成两个字节了。