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

JavaScript에서 문자열의 영숫자만 유지하고 특수 문자를 ASCII 코드로 변환하는 방법

문자열에 특수 문자가 포함되어 있을 때, 이를 적절히 처리하는 자바스크립트 함수를 작성해야 하는 경우가 종종 있습니다.

여기서 요구되는 함수는 문자열을 입력받아 알파벳, 숫자, 공백은 그대로 유지하되, 나머지 특수 문자들을 해당하는 ASCII 코드 값으로 변환한 새로운 문자열을 반환하는 것입니다.

예제

이 기능을 구현한 코드는 다음과 같습니다.

const str = 'Th!s !s @ str!ng th@t cont@!ns some special characters!!';
const specialToASCII = str => {
    let res = '';
    for(let i = 0; i < str.length; i++){
        if(+str[i] || str[i].toLowerCase() !== str[i].toUpperCase() || str[i] === ' '){
            res += str[i];
            continue;
        };
        res += str[i].charCodeAt(0);
    };
    return res;
};
console.log(specialToASCII(str));

코드 설명

함수의 동작 원리를 단계별로 살펴보겠습니다.

  • +str[i] : 문자를 숫자로 강제 변환합니다. 해당 문자가 숫자라면 참(truthy) 값을 가지므로 그대로 유지됩니다.
  • str[i].toLowerCase() !== str[i].toUpperCase() : 알파벳 문자는 대소문자를 변환하면 값이 달라지지만, 특수 문자는 변환해도 동일하게 유지됩니다. 이 성질을 이용해 알파벳 여부를 판별합니다.
  • str[i] === ' ' : 공백 문자도 단어 구분을 위해 그대로 보존합니다.
  • 위 세 조건에 모두 해당하지 않는 문자는 특수 문자이므로, charCodeAt(0) 메서드를 호출하여 해당 문자의 ASCII 코드 값으로 치환합니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

Th33s 33s 64 str33ng th64t cont6433ns some special characters3333

출력 결과를 보면 특수 문자 !(ASCII 코드 33)와 @(ASCII 코드 64)가 각각 해당하는 숫자 값으로 대체된 것을 확인할 수 있습니다. 반면 알파벳과 숫자, 공백은 원본 그대로 유지됩니다.