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

JavaScript로 문자열의 각 알파벳을 다음 문자로 바꾸는 방법

이번 글에서는 문자열을 입력받아 영어 알파벳으로 구성된 모든 문자를 바로 다음 알파벳으로 바꾸는 JavaScript 함수를 작성해 보겠습니다.

예를 들어 다음과 같은 문자열이 있다고 가정해 봅시다.

const str = 'how are you';

출력 결과

함수 실행 후 기대되는 출력은 다음과 같습니다.

const output = 'ipx bsf zpv';

즉, 각 알파벳이 한 칸씩 뒤로 이동합니다(h → i, o → p, w → x). 공백처럼 알파벳이 아닌 문자는 원래 그대로 유지되며, zZ처럼 알파벳의 마지막 문자는 다시 a 또는 A로 순환 처리되어야 합니다.

구현 코드

이러한 동작을 수행하는 전체 코드는 다음과 같습니다.

const str = 'how are you';
const isAlpha = code => (code >= 65 && code <= 90) || (code >= 97 && code <= 122);
const isLast = code => code === 90 || code === 122;
const nextLetterString = str => {
    const strArr = str.split('');
    return strArr.reduce((acc, val) => {
        const code = val.charCodeAt(0);
        if(!isAlpha(code)){
            return acc+val;
        };
        if(isLast(code)){
            return acc+String.fromCharCode(code-25);
        };
        return acc+String.fromCharCode(code+1);
    }, '');
};
console.log(nextLetterString(str));

코드 설명

  • isAlpha: 문자의 유니코드 값이 영문 대문자(A~Z, 65~90) 또는 소문자(a~z, 97~122) 범위에 포함되는지 확인하는 헬퍼 함수입니다.
  • isLast: 해당 문자가 알파벳의 마지막 문자(Z 또는 z)인지 판별합니다.
  • nextLetterString: 문자열을 split('')으로 개별 문자 배열로 나눈 뒤, reduce를 사용해 각 문자를 순회하며 새로운 문자열을 조립합니다. 알파벳이 아니면 그대로 추가하고, 마지막 알파벳이면 25를 빼 처음 문자로 되돌리며, 그 외의 경우에는 1을 더해 다음 문자로 변환합니다.

여기서 핵심은 charCodeAt()으로 문자를 숫자 코드로 변환하고, String.fromCharCode()로 다시 문자로 되돌리는 방식입니다. 이를 활용하면 별도의 알파벳 매핑 테이블 없이도 간결하게 문자 치환 로직을 구현할 수 있습니다.

실행 결과

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

ipx bsf zpv