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

JavaScript로 문자열 내 특정 문자 위치 서로 바꾸기


문제 정의

이번 문제에서는 'k', 'l', 'm' 세 글자만으로 구성된 문자열을 입력받는 JavaScript 함수를 작성해야 합니다.

함수가 수행할 작업은 문자열 속 모든 'k'를 'l'로, 'l'을 'k'로 서로 교환하되, 'm'은 원래 자리 그대로 유지하는 것입니다.

코드 구현

다음은 위 문제를 해결하는 코드입니다 −

const str = 'kklkmlkk';

const switchPositions = (str = '') => {
   let res = "";
   for(let i = 0; i < str.length; i++){
      if (str[i] === 'k') {
         res += 'l';
      } else if (str[i] === 'l') {
         res += 'k';
      } else {
         res += str[i];
    };
  };
  return res;
};

console.log(switchPositions(str));

동작 원리

이 코드의 핵심 로직은 다음과 같습니다.

  • 빈 문자열 res를 결과 저장용으로 초기화합니다.
  • for 반복문으로 입력 문자열의 각 문자를 하나씩 순회합니다.
  • 현재 문자가 'k'라면 결과에 'l'을 추가하고, 'l'이라면 'k'를 추가합니다.
  • 그 외의 문자(즉, 'm')는 변경 없이 그대로 추가합니다.
  • 순회가 끝나면 완성된 문자열을 반환합니다.

정규식을 활용한 대안 방법

반복문 대신 replace() 메서드와 정규식을 조합하면 더 간결하게 표현할 수 있습니다.

const switchPositions = (str = '') =>
   str.replace(/[kl]/g, ch => (ch === 'k' ? 'l' : 'k'));

console.log(switchPositions('kklkmlkk')); // llklmkll

정규식 /[kl]/g는 문자열 전체에서 'k' 또는 'l'에 해당하는 모든 문자를 찾아내고, 콜백 함수가 각 문자를 반대 문자로 치환합니다. 'm'은 패턴에 포함되지 않으므로 자동으로 그대로 유지됩니다.

출력 결과

다음은 콘솔 출력 결과입니다 −

llklmkll