알고리즘 문제를 풀다가 소문자, 대문자 판별, 숫자 판별 등의 기능을 구현해야할 때 아스키코드를 유용하게 사용할 수 있음
아스키 코드는 0에서 127까지의 숫자를 이용하여 문자를 표현한다. 제어 문자 코드는 0부터 31까지 차지하며, 스페이스 문자부터 인쇄가 가능한 코드이다. 스페이스 문자는 32로 표현된다. 느낌표 문자(!)의 코드는 33이다. 이렇게 1씩 증가하며 문자들을 순차적으로 나열한다. 곧 'a'는 97, 'b'는 98이다.
string.charCodeAt();
예시)
"k".charCodeAt(); // 107
1.charCodeAt(); // SyntaxError
문자열을 입력한 경우 특정 인덱스만 변환하는 방법은 charCodeAt()
에 인자를 넣어주면 된다.
"hello".charCodeAt(0); // 104
"hello".charCodeAt(1); // 101
"hello".charCodeAt(4); // 111
"hello".charCodeAt(5); // NaN
"hello".charCodeAt(-1); // NaN
String.fromCharCode(number)
예시)
String.fromCharCode(118); // "v"
String.fromCharCode(32); // " "
String.fromCharCode(0x6E); // "n"
String.fromCharCode(0x20); // " "
아스키 코드 표를 보면 16진수 목록이 존재하고 이 또한 number타입으로 인식되어 변환이 가능하다.
여러 개의 숫자를 나열해서 문자열을 만들 수도 있다.
String.fromCharCode(72, 0x61, 110); // "Han"
단, fromCharCode()가 허용하는 범위는 0부터 65535(0xFFFF)까지임을 명심해야 한다.
해당 범위를 넘어서는 값을 입력하게 되면 65535 다음부터는 다시 0부터 시작하게 된다.
String.fromCharCode(65536); // "\x00"
String.fromCharCode(0); // "\x00"
String.fromCharCode(65536 + 104); // "h"
String.fromCharCode(104); // "h"
알고리즘 문제를 풀 때 아스키 코드가 사용되는 두 가지 상황이다.
이런 경우에는 문자를 아스키 코드 숫자로 변환하고, 그 숫자가 아스키 코드의 표에 명시된 범위에 속하는지를 보면된다.
예를들어, "h"는 104로 변환된다. 만약 소문자만 들어있는지 판별해야한다면 조건문은
변환된 숫자 >= 97
&& 변환된 숫자 <= 122
가 될 것이다.
이 때 104는 해당 범위 내에 속하므로 소문자라는 것을 알 수 있다.
따라서 charCodeAt()
으로 문자를 숫자로 변환한 뒤, 조건문에서 판단하면 되겠다.
charCodeAt()
으로 변환하여 조건문을 통과하면 fromCharCode()
를 사용해서 숫자를 다시 문자로 변환하여 정답 변수에 넣어주면된다.
물론 조건문 판단에만 사용하고, fromCharCode()
를 사용하지 않고 인덱스를 보고 문자열을 넣어주는 방법도 있다.
다만, 여기서는 최대한 두 메소드를 써먹기 위해 이런 과정을 언급했다.
이 두 케이스를 예시로 활용하면, 숫자와 알파벳만 들어있는지 판별하는 조건문을 만들 수도 있다.