繁体   English   中英

JavaScript数字转字母

[英]JavaScript Number to Letter

我最近一直在尝试编码一些JS代码将字母转换为数字的问题,例如。 1 = a。

我当前的代码如下所示(使用HTML脚本标签):

<html>
<script language="javascript" type="text/javascript">
    <!-- Begin
    function convert(input) {
        var inputlength = input.length;
        input = input.toLowerCase();
        var phonenumber = "";
        for (i = 0; i < inputlength; i++) {
            var character = input.charAt(i);

            switch (character) {
                case '0':
                    phonenumber += "0";
                    break


                case 'a':
                    phonenumber += "1 ";
                    break;
                case 'b':
                    phonenumber += "2 ";
                    break;
                case 'c':
                    phonenumber += "3 ";
                    break;
                case 'd':
                    phonenumber += "4 ";
                    break;
                case 'e':
                    phonenumber += "5 ";
                    break;
                case 'f':
                    phonenumber += "6 ";
                    break;
                case 'g':
                    phonenumber += "7 ";
                    break;
                case 'h':
                    phonenumber += "8 ";
                    break;
                case 'i':
                    phonenumber += "9 ";
                    break;
                case 'j':
                    phonenumber += "10 ";
                    break;
                case 'k':
                    phonenumber += "11 ";
                    break;
                case 'l':
                    phonenumber += "12 ";
                    break;
                case 'm':
                    phonenumber += "13 ";
                    break;
                case 'n':
                    phonenumber += "14 ";
                    break;
                case 'o':
                    phonenumber += "15 ";
                    break;
                case 'p':
                    phonenumber += "16 ";
                    break;
                case 'q':
                    phonenumber += "17 ";
                    break;
                case 'r':
                    phonenumber += "18 ";
                    break;
                case 's':
                    phonenumber += "19 ";
                    break;
                case 't':
                    phonenumber += "20 ";
                    break;
                case 'u':
                    phonenumber += "21 ";
                    break;
                case 'v':
                    phonenumber += "22 ";
                    break;
                case 'w':
                    phonenumber += "23 ";
                    break;
                case 'x':
                    phonenumber += "24 ";
                    break;
                case 'y':
                    phonenumber += "25 ";
                    break;
                case 'z':
                    phonenumber += "26 ";
                    break;


                case '-':
                    phonenumber += "-";
                    break;
                case '1':
                    phonenumber += "a";
                    break;
                case '2':
                    phonenumber += "b";
                    break;
                case '3':
                    phonenumber += "c";
                    break;
                case '4':
                    phonenumber += "d";
                    break;
                case '5':
                    phonenumber += "e";
                    break;
                case '6':
                    phonenumber += "f";
                    break;
                case '7':
                    phonenumber += "g";
                    break;
                case '8':
                    phonenumber += "h";
                    break;
                case '9':
                    phonenumber += "i";
                    break;
                case '1-0':
                    phonenumber += "j";
                    break;
                case '1-1':
                    phonenumber += "k";
                    break;
                case '1-2':
                    phonenumber += "l";
                    break;
                case '1-3':
                    phonenumber += "m";
                    break;
                case '1-4':
                    phonenumber += "n";
                    break;
                case '1-5':
                    phonenumber += "o";
                    break;
                case '1-6':
                    phonenumber += "p";
                    break;
                case '1-7':
                    phonenumber += "q";
                    break;
                case '1-8':
                    phonenumber += "r";
                    break;
                case '1-9':
                    phonenumber += "s";
                    break;
                case '2-0':
                    phonenumber += "t";
                    break;
                case '2-1':
                    phonenumber += "u";
                    break;
                case '2-2':
                    phonenumber += "v";
                    break;
                case '2-3':
                    phonenumber += "w";
                    break;
                case '2-4':
                    phonenumber += "x";
                    break;
                case '2-5':
                    phonenumber += "y";
                    break;
                case '2-6':
                    phonenumber += "z";
                    break;

            }
        }
        document.myform.number.value = phonenumber;
        return true;
    }
    //  End -->
</script>
<form name=myform>
    <table border=0>
        <tr>
            <td>Alphanumeric #:</td>
            <td>
                <input type=text size=20 maxlength=20 name=alphabet value="Will123">
            </td>
        </tr>
        <tr>
            <td>Converted #:</td>
            <td>
                <input type="text" size=20 maxlength=20 name="number">
            </td>
        </tr>
        <tr>
            <td align=center colspan=2>
                <input type=button value="Convert" onClick="return    convert(document.myform.alphabet.value)">
            </td>
    </table>
</form>

</html>

但是,每当我尝试将对应于x(24)的数字转换为字母时,都会给我“ bd”,因为它是分别处理2和4。 有没有一种简单的方法可以阻止这种情况,以便在我输入24时产生“ x”?

遍历输入时,您正在调用input.charAt(i) ,但这一次只会拉一个字符。 如果要它拉两位数的数字,则需要编写代码。 否则,一次只能读取并处理一位数字。

拉动单个字符时,请检查它是否在0到9之间(包括0和9)。 如果是的话,请遍历接下来的几个字符并构建所需的字符串,然后再将其传递到switch ,这样您就可以获取所需的多位数字输入。

您应该执行以下操作:

function covert(input)
{
    var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
    var nums=["1","2","3","4","5","6","7","8","9","1-0","1-1","1-2","1-3","1-4","1-5","1-6","1-7,"1-8","1-9","2-0","2-1",2-2","2-3","2-4",2-5",2-6"]
    var letters = input.lowerCase().split("");

    for(var i=0;i<letters.length;i++)
       if(letters[i].lowerCase != letters[i].toUpperCase()) //Checking if it's a letter 
          phonenumber+=toString(alphabet.indexOf(letter[i])+1;);


    var dashesAndNum=input.replace(/[A-Za-z],' ').split(" ");

    for(var i=0;i<dashesAndNum.length;i++)
       if(dashesAndNum[i] == "0" || dashesAndNum[i] == "-")
          phonenumber+=dashesAndNum[i];
       else
          phonenumber+=alphabet[num.indexOf(dashesAndNum[i])];

    document.myform.number.value = phonenumber;
        return true;
}

考虑一下-在生成的数字之间。 这意味着,您不能使用-用数字括起来的东西进行编码。

function convert(input) {
    var inputlength = input.length,
        CODE = '0abcdefghijklmnopqrstuvwxyz',
        phonenumber = "",
        character,
        i;
    input = input.toLowerCase();
    for (i = 0; i < inputlength; i++) {
        character = input[i];
        if (isFinite(input[i]) && '-' === input[i + 1] && isFinite(input[i+2])) {
            i += 2;
            character += input[i];
        }
        phonenumber += ~CODE.indexOf(character) ? ('' + CODE.indexOf(character)).split('').join('-') : (character === '-' ? '-' : CODE[character]);
    }
    document.myform.number.value = phonenumber;
    return true;
}

解决-问题的合适方法是为2位数字实现一个不同的字符作为符号,也许是| 所以代码看起来像这样:

function convert(input) {
    var inputlength = input.length,
        CODE= '0abcdefghijklmnopqrstuvwxyz',
        SEPARATOR = '|',
        phonenumber = "",
        character,
        i;

    input = input.toLowerCase();
    for (i = 0; i < inputlength; i++) {
        character = input[i];
        if (isFinite(input[i]) && SEPARATOR === input[i + 1] && isFinite(input[i + 2])) {
            i += 2;
            character += input[i];
        }
        phonenumber += ~CODE.indexOf(character) ? ('' + CODE.indexOf(character)).split('').join(SEPARATOR) : (character === '-' ? '-' : CODE[character]);
    }
    document.myform.number.value = phonenumber;
    return true;
}

尝试这个:

String.fromCharCode(96+24)

您可以在其中用其他数字替换24。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM