不是很复杂,多提供些输入输出样例,好确定翻译后运算是正确的。大概是这样:Math.DivRem(a, b, out j) ->> j = a % b;
constStr.Substring() ->> constStr.substr()
aChar = ctnNo[0];  ->> ctnNo.charAt(0)
Convert.ToInt32() ->> parseInt()

解决方案 »

  1.   

    你这方法是做啥的呀,看下吧,翻译的好累...-__-        String.prototype.Trim = function() //为了让JS用TRIM

    return this.replace(/(^\s*)|(\s*$)/g, ""); 

            function CheckCtnNo(ctnNo) 
            {
                var aChar; 
                var constStr; 
                var b0, b1, b2, b3; 
                var r0, r1, r2; 
                var j; 
                var cntNo; 
                cntNo = ctnNo.Trim(); 
                if (ctnNo.length !=11) 
                { 
                    return false; 
                }             aChar = ctnNo.charAt(0); 
                if (aChar < 'A' || aChar > 'Z') 
                { 
                    return false; 
                } 
                constStr = "10010203040506070809"; 
                j=(aChar.charCodeAt(0)-'A'.charCodeAt(0))%10;
                b0 = constStr.substring(2 * j, 2); 
                aChar = ctnNo.charAt(1); 
                if (aChar < 'A' || aChar > 'Z') 
                { 
                    return false; 
                } 
                constStr = "09020406081001030507"; 
                 j=(aChar.charCodeAt(0)-'A'.charCodeAt(0))%10;
                b1 = constStr.substring(2 * j, 2); 
                aChar = ctnNo.charAt(2); 
                if (aChar < 'A' || aChar > 'Z') 
                { 
                    return false; 
                } 
                constStr = "07040801050902061003"; 
                 j=(aChar.charCodeAt(0)-'A'.charCodeAt(0))%10;
                b2 = constStr.substring(2 * j, 2); 
                aChar = ctnNo.charAt(3); 
                if (aChar < 'A' || aChar > 'Z') 
                { 
                    return false; 
                } 
                constStr = "03080502100704010906"; 
                 j=(aChar.charCodeAt(0)-'A'.charCodeAt(0))%10
                b3 = constStr.substring(2 * j, 2); 
                r0=(parseInt(b0)+parseInt(b1)+parseInt(b2)+parseInt(b3))%11;
              for (var i = 5; i <= 11; i++) 
                { 
                    if (ctnNo.substring(i - 1, 1).charAt(0) < '0' || ctnNo.substring(i - 1, 1).charAt(0) > '9') 
                    { 
                        return false; 
                    } 
                }
                r1=(5*parseInt(ctnNo.substring(4, 1))+10*parseInt(ctnNo.substring(5, 1))+9*parseInt(ctnNo.substring(6, 1))+7*parseInt(ctnNo.substring(7, 1))+3*parseInt(ctnNo.substring(8, 1))+6*parseInt(ctnNo.substring(9, 1)))%11;
    r2=(r0 + r1)%11;
                if (r2==10)
                { 
                    r2 = 0; 
                } 
                if (ctnNo.substring(10, 1)==r2) 
                { 
                    return true; 
                } 
                return false;         }         function CheckSealNum(sealNum) 
            { 
                for (var i = 0; i < sealNum.Trim().Length; i++) 
                { 
                    if ((sealNum.charAt(i) < 'A' || sealNum.charAt(i) > 'Z') && (sealNum.charAt(i) < 'a' || sealNum.charAt(i) > 'z') && sealNum.charAt(i) != " " && !(sealNum.charAt(i) >= '0' && sealNum.charAt(i) <= '9'))                 
                    { 
                        return false; 
                    } 
                } 
                return true; 
            } 
      

  2.   

    简单的做了一下,
    没怎么测,楼主自己测试一下吧。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title></title>
            <script language="javascript">
                function ValidateCntNo(){
                    this.CheckCtnNo = function(ctnNo){
                        var s = ctnNo.replace(/^\s+|\s+$/g, '');
                        if (!/[A-Z]{4}\d{7}/.test(s)) {
                            return false;
                        }
                        var rule = ["10010203040506070809", "09020406081001030507", "07040801050902061003", "03080502100704010906", 4, 10, 9, 7, 3, 6];
                        var r0 = 0;
                        var r1 = 0;
                        var r2 = 0;
                        
                        for (var i = 0; i < 4; i++) {
                            r0 += 1 * rule[i].substr((s.charCodeAt(i) - 65) % 10 * 2, 2);
                        }
                        
                        for (var i = 4; i < 10; i++) {
                            r1 += rule[i] * s.charAt(i);
                        }
                        r1 %= 11;
                        r2 = (r0 + r1) % 11;
                        if (r2 == 10) {
                            r2 = 0;
                        }
                        alert(r2);
                        return (r2 == s.charAt(i))
                    }
                    this.CheckSealNum = function(sealNum){
                        return (!/[^a-zA-Z0-9 ]/.test(sealNum));
                    }
                }
            </script>        <script language="javascript">
                var f = new ValidateCntNo();
                var str;            str = "ab#cd1098 ade";
                alert(f.CheckSealNum(str));
                str = "  ABCD1234569  ";
                alert(f.CheckCtnNo(str));
            </script>
        </head>
        <body>
        </body>
    </html>
      

  3.   

    数组中有一处错误,自己改一下吧。var rule = ["10010203040506070809", "09020406081001030507", "07040801050902061003", "03080502100704010906", 5, 10, 9, 7, 3, 6];