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

JavaScript로 문자열 내 단어를 검열·마스킹하는 방법

문제 정의

이번 글에서는 하나의 문자열을 입력받아 특정 규칙에 따라 변환된 결과를 반환하는 JavaScript 함수를 작성해 보겠습니다.

함수가 문자열을 변환할 때 적용해야 할 규칙은 다음과 같습니다.

  • 모든 단어는 대문자로 변환합니다.
  • 모든 단어 뒤에는 '!!!!'를 붙입니다.
  • 알파벳 'a' 또는 'A''@'로 바꿉니다.
  • 그 외의 모든 모음(E, I, O, U)은 '*'로 바꿉니다.

구현 예시

위 규칙을 적용한 코드는 아래와 같습니다.

const str = 'ban censored words';
const maskWords = (str = '') => {
    let arr = str.split(' ');
    const res = [];
    for (let i = 0; i < arr.length; ++i) {
        let s = (arr[i].toUpperCase() + '!!!!').split('');
        for (let j = 0; j < s.length; ++j) {
            if (s[j] == 'A')
                s[j] = '@';
            if (s[j] == 'E' || s[j] == 'I' || s[j] == 'O' || s[j] == 'U')
                s[j] = '*';
        }
        res.push(s.join(''));
    }
    return res.join(' ');
};
console.log(maskWords(str));

코드 설명

동작 과정을 단계별로 살펴보면 다음과 같습니다.

  1. split(' ')으로 입력 문자열을 공백 기준으로 나누어 단어 배열을 만듭니다.
  2. 각 단어에 대해 toUpperCase()로 대문자로 변환한 뒤, 끝에 '!!!!'를 붙입니다.
  3. 변환된 단어를 한 글자씩 순회하면서 'A'는 '@'로, E/I/O/U는 '*'로 치환합니다.
  4. 처리가 완료된 각 단어를 결과 배열에 저장하고, 최종적으로 공백으로 연결하여 반환합니다.

출력 결과

B@N!!!! C*NS*R*D!!!! W*RDS!!!!

입력 문자열 'ban censored words'가 위와 같이 대문자화, 느낌표 추가, 모음 치환이 모두 적용된 형태로 출력되는 것을 확인할 수 있습니다.