정수를 해당 문자로 변환하십시오. 여기서 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
}
사용하십시오 String.fromCharCode
. 이것은 ASCII의 첫 128 문자와 일치하는 유니 코드 값에서 문자열을 리턴합니다.
var a = String.fromCharCode(97);
97
또는 같은 마법 번호를 사용하는 모든 솔루션이 마음에 들지 않습니다 36
.
const A = 'A'.charCodeAt(0);
let numberToCharacter = number => String.fromCharCode(A + number);
let characterToNumber = character => character.charCodeAt(0) - A;
대문자로 가정하고 0에서 'A'를 시작합니다.
당신은 간다 : (a-zA-Z)
function codeToChar( number ) {
if ( number >= 0 && number <= 25 ) // a-z
number = number + 97;
else if ( number >= 26 && number <= 51 ) // A-Z
number = number + (65-26);
else
return false; // range error
return String.fromCharCode( number );
}
입력 : 0-51 또는 false를 반환합니다 (범위 오류).
또는:
var codeToChar = function() {
var abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
return function( code ) {
return abc[code];
};
})();
범위 오류의 경우 undefined를 반환합니다. 참고 : 배열은 한 번만 작성되며 닫힘으로 인해 새 codeToChar 함수에 사용할 수 있습니다. 나는 그것이 첫 번째 방법보다 훨씬 빠르다고 생각합니다 (기본적으로 조회 일뿐입니다).
@mikemaccana의 훌륭한 솔루션의 유일한 문제는 성능이 비싼 바이너리 >> 연산자를 사용한다는 것입니다. 동료가 더 쉽게 읽을 수 있도록 약간의 개선으로 그의 훌륭한 작업에 대한 이러한 수정을 제안합니다.
const getColumnName = (i) => {
const previousLetters = (i >= 26 ? getColumnName(Math.floor(i / 26) -1 ) : '');
const lastLetter = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[i % 26];
return previousLetters + lastLetter;
}
또는 원 라이너로
const getColumnName = i => (i >= 26 ? getColumnName(Math.floor(i / 26) -1 ) : '') + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[i % 26];
예:
getColumnName(0); // "A"
getColumnName(1); // "B"
getColumnName(25); // "Z"
getColumnName(26); // "AA"
getColumnName(27); // "AB"
getColumnName(80085) // "DNLF"
시험
(n+10).toString(36)
chr = n=>(n+10).toString(36);
for(i=0; i<26; i++) console.log(`${i} => ${ chr(i) }`);
Assuming you want uppercase case letters:
function numberToLetter(num){
var alf={
'0': 'A', '1': 'B', '2': 'C', '3': 'D', '4': 'E', '5': 'F', '6': 'G'
};
if(num.length== 1) return alf[num] || ' ';
return num.split('').map(numberToLetter);
}
Example:
numberToLetter('023') is ["A", "C", "D"]
numberToLetter('5') is "F"
It generates random number and char for phone verification or something else.
function randomIntFromInterval(min,max)
{
return Math.floor(Math.random()*(max-min+1)+min);
}
function generateRandomVerification(length){
let char;
let sum ="";
for(let i=0;i < length;i++){
if(Math.round(Math.random())){
random = randomIntFromInterval(65,90);
char = String.fromCharCode(random);//65-90
sum = sum + char;
console.log("CHAR: ", char);
}else{
random = randomIntFromInterval(48,57);
char = String.fromCharCode(random);//48-57
sum = sum + char;
console.log("CHAR: ", char);
}
}
alert(sum);
}
generateRandomVerification(5);
Here is link
'Programing' 카테고리의 다른 글
스타일 시트에서 IE (모든 버전) 만 타겟팅하는 방법은 무엇입니까? (0) | 2020.05.30 |
---|---|
Apache mod_rewrite를 디버깅하는 방법 (0) | 2020.05.30 |
SSMS에서 ntext 또는 nvarchar (max)의 모든 텍스트를 어떻게 봅니까? (0) | 2020.05.30 |
Java Stanford NLP : 음성 레이블의 일부? (0) | 2020.05.30 |
JAXB를 사용하여 XML 문자열에서 오브젝트 작성 (0) | 2020.05.30 |