Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열의 각 알파벳을 숫자로 변환하는 방법

이번 글에서는 문자열을 입력받아 각 알파벳에 대응하는 숫자를 출력하는 JavaScript 함수를 작성해 보겠습니다.

알파벳과 숫자의 대응 관계는 다음과 같습니다.

a = 1
b = 2
c = 3
d = 4
e = 5
.
.
.
Y = 25
Z = 26

문제 이해하기

예를 들어 입력값이 "hello man"이라면, 공백을 제외한 각 문자에 해당하는 숫자가 출력되어야 합니다.

"8,5,12,12,15,13,1,14"

여기서 h=8, e=5, l=12, l=12, o=15, m=13, a=1, n=14를 의미합니다.

구현 원리

핵심 아이디어는 charCodeAt() 메서드를 활용하는 것입니다. 소문자 'a'의 유니코드 값은 97이므로, 각 문자의 charCodeAt(0) 결과에서 96을 빼면 a=1부터 시작하는 순번을 얻을 수 있습니다. 또한 정규표현식으로 알파벳 여부를 검사하여 공백이나 특수문자는 건너뛰도록 처리합니다.

예제 코드

다음은 전체 구현 코드입니다.

const str = 'hello man';
const charPosition = str => {
    str = str.split('');
    const arr = [];
    const alpha = /^[A-Za-z]+$/;
    for(i=0; i < str.length; i++){
        if(str[i].match(alpha)){
            const num = str[i].charCodeAt(0) - 96;
            arr.push(num);
        }else{
            continue;
        };
    };
    return arr.toString();
}
console.log(charPosition(str));

코드 설명

  • str.split(''): 문자열을 한 글자씩 분리하여 배열로 만듭니다.
  • /^[A-Za-z]+$/: 영문 알파벳만 통과시키는 정규표현식입니다.
  • charCodeAt(0) - 96: 대소문자 구분 없이 알파벳 순번(1~26)을 계산합니다.
  • arr.toString(): 결과 배열을 쉼표로 구분된 문자열로 변환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 출력이 나타납니다.

"8,5,12,12,15,13,1,14"

마무리

이처럼 charCodeAt() 메서드와 간단한 정규표현식을 조합하면 문자열 내 각 알파벳의 위치 값을 손쉽게 추출할 수 있습니다. 대문자가 포함된 경우에도 동일하게 동작하므로, 다양한 문자열 처리 작업에 응용할 수 있습니다.