[javascript] 정수를 해당 문자로 변환하십시오. 여기서 0 => a, 1 => b 등

알파벳을 기준으로 정수를 해당 문자로 변환하고 싶습니다. 예를 들면 다음과 같습니다.

0 => a
1 => b
2 => c
3 => d

등. 나는 배열을 만들 수 있고 필요할 때 그것을 찾을 수는 있지만 이것을 위해 내장 함수가 있는지 궁금합니다. Google을 통해 찾은 모든 예제는 알파벳의 문자 위치가 아닌 ASCII 값으로 작동합니다.



답변

소문자를 원한다고 가정하십시오.

var chr = String.fromCharCode(97 + n); // where n is 0, 1, 2 ...

97은 소문자 ‘a’의 ASCII 코드입니다. 대문자를 원하면 97을 65로 바꾸십시오 (대문자 ‘A’). 인 경우 n > 25글자 범위를 벗어날 수 있습니다.


답변

다른 알파벳으로 확장하는 경우 더 이식성이 뛰어납니다.

char='abcdefghijklmnopqrstuvwxyz'[code]

또는 (우리의 사랑하는 IE와의) 더 호환되기 위해 :

char='abcdefghijklmnopqrstuvwxyz'.charAt(code);


답변

다중 문자 문자열을 다시 가져와도 괜찮다면 임의의 양의 인덱스를 지원할 수 있습니다.

function idOf(i) {
    return (i >= 26 ? idOf((i / 26 >> 0) - 1) : '') +  'abcdefghijklmnopqrstuvwxyz'[i % 26 >> 0];
}

idOf(0) // a
idOf(1) // b
idOf(25) // z
idOf(26) // aa
idOf(27) // ab
idOf(701) // zz
idOf(702) // aaa
idOf(703) // aab

(정밀 오류에 대해 철저히 테스트되지 않았습니다.)


답변

간단한 대답은 (26 자)입니다.

String.fromCharCode(97+n);

공간이 소중한 경우 다음 (20 자)을 수행 할 수 있습니다.

(10+n).toString(36);

여분의 바이트로 무엇을 할 수 있는지 생각해보십시오!

이 방법은 숫자를 밑수 36으로 변환하므로 다음 문자가 있습니다.

0123456789abcdefghijklmnopqrstuvwxyz
^         ^
n        n+10

문자를 10으로 오프셋하면 a대신 문자가 시작됩니다 0.

클라이언트 측의 두 가지 예제를 얼마나 빠르게 실행하는지 비교할 수는 없습니다.


답변

Javascript의 String.fromCharCode (code1, code2, …, codeN)는 무한한 수의 인수를 사용하여 해당 ASCII 값이 code1, code2, … codeN 인 문자 문자열을 리턴합니다. ASCII에서 97은 ‘a’이므로 색인에 97을 추가하여 색인을 조정할 수 있습니다.

function indexToChar(i) {
  return String.fromCharCode(i+97); //97 in ASCII is 'a', so i=0 returns 'a', 
                                    // i=1 returns 'b', etc
}


답변

97또는 같은 마법 번호를 사용하는 모든 솔루션이 마음에 들지 않습니다 36.

const A = 'A'.charCodeAt(0);

let numberToCharacter = number => String.fromCharCode(A + number);

let characterToNumber = character => character.charCodeAt(0) - A;

대문자로 가정하고 0에서 ‘A’를 시작합니다.


답변

사용하십시오 String.fromCharCode. 이것은 ASCII의 첫 128 문자와 일치하는 유니 코드 값에서 문자열을 리턴합니다.

var a = String.fromCharCode(97);