이번 글에서는 문자열을 인자로 받아, 그 안의 각 알파벳 문자에 대응되는 숫자를 출력하는 자바스크립트 함수를 작성해 보겠습니다.
알파벳과 숫자의 매핑 규칙
각 알파벳은 다음과 같이 순서대로 숫자에 매핑됩니다.
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"