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

JavaScript 입력 유효성 검사: 문자열의 모든 'a'를 '@'로, 'i'를 '!'로 바꾸기

문제 이해하기

우리는 validate()라는 함수를 작성해야 합니다. 이 함수는 문자열을 유일한 인수로 받아서, 문자열 안의 모든 'a'는 '@'로, 'i'는 '!'로 바꾼 새로운 문자열을 반환합니다.

이 문제는 인덱스를 사용하여 문자열을 한 글자씩 순회하면서 새로운 문자열을 만들어 가는 전형적인 for 반복문 문제입니다.

예제 코드

const string = 'Hello, is it raining in Amsterdam?';
const validate = (str) => {
    let validatedString = '';
    for(let i = 0; i < str.length; i++){
       if(str[i] === 'a'){
          validatedString += '@';
       }else if(str[i] === 'i'){
          validatedString += '!';
       }else{
          validatedString += str[i];
       };
    };
    return validatedString;
};
console.log(validate(string));

출력 결과

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

Hello, !s !t r@!n!ng !n Amsterd@m?

더 간결한 대안: replaceAll() 활용

for 반복문 대신 ES2021에서 도입된 replaceAll() 메서드를 사용하면 훨씬 간결하게 같은 결과를 얻을 수 있습니다.

const validate = (str) => str.replaceAll('a', '@').replaceAll('i', '!');
console.log(validate(string)); // Hello, !s !t r@!n!ng !n Amsterd@m?

정규표현식과 replace() 메서드를 조합하는 방법도 있습니다.

const validate = (str) => str.replace(/[ai]/g, ch => ch === 'a' ? '@' : '!');

실무에서는 코드의 가독성과 유지보수성을 고려할 때 반복문보다 replaceAll()이나 정규표현식 방식을 권장합니다. 다만, 학습 목적으로 문자열 순회 로직을 익히고 싶다면 for 반복문 버전이 좋은 연습 예제가 됩니다.