0

重複の可能性:
一意性を維持しながら、数値を可能な限り短い文字列に変換します

何かを数えたいのですが、結果を報告するのに 1 桁しかないので、数字 > 9 には文字を使用したいと思います。

1 => 1
5 => 5
10 => A
30 => U
55 => u   // I may have an off-by-one error here -- you get the idea
>61 => z  // 60 will be more than enough, so I'll use z to mean "at least 62"

JavaScriptを使用してそれを行う最も簡単な方法は何ですか?

4

3 に答える 3

0

これを行う多くの方法の1つを次に示します。

function num2letter(num) {
    if( num > 61) return "z";
    if( num < 0) return num;
    return "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"[num];
}
于 2012-06-26T21:01:35.203 に答える
0

base 36 で十分だと判断しました。

function oneDigit(n) {
    var BASE=36;
    if (n >= BASE-1) { n = BASE-1; }
    return n.toString(BASE);
}
于 2012-06-26T21:10:10.743 に答える
0

それを行う別の方法:

function parse(x)
{
    if(x<10)return x;
    else if(x<36)return String.fromCharCode(x+55).toUpperCase();
    else if(x<62)return String.fromCharCode(x+29).toLowerCase();
    else return "z";
}

そして、この小さなテスト:

var res="";
for(var a=-10;a<70;a++)res+=a+" -> "+parse(a)+"\n";
alert(res);

そしてフィドル:http://jsfiddle.net/nD59z/4/

同じ方法ですが、文字が少なくてわかりにくい:

function parse(x)
{
    return x<10?x:(x<36?String.fromCharCode(x+55).toUpperCase():(x<62?String.fromCharCode(x+29).toLowerCase():"z"));
}
于 2012-06-26T21:20:43.977 に答える