Computer >> 컴퓨터 >  >> 프로그래밍 >> 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"

구현 코드

위 요구사항을 충족하는 코드는 다음과 같습니다.

const str = 'hello man';
const charPosition = str => {
   str = str.split('');
   const arr = [];
   const alpha = /^[A-Za-z]+$/;
   for(let 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));

코드 동작 원리

각 단계가 어떻게 동작하는지 살펴보겠습니다.

  • split(''): 문자열을 한 글자씩 분리해 배열로 만듭니다.
  • 정규식 검사: 정규식 /^[A-Za-z]+$/으로 현재 문자가 영문 알파벳인지 확인합니다. 공백이나 특수문자는 이 조건을 통과하지 못하므로 자동으로 걸러집니다.
  • charCodeAt(0): 해당 문자의 유니코드 코드 값을 반환합니다. 소문자 'a'의 코드 값은 97이므로 여기서 96을 빼면 'a'는 1, 'b'는 2처럼 원하는 숫자로 변환됩니다.
  • toString(): 결과 배열을 쉼표로 구분된 하나의 문자열로 변환해 반환합니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

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