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

JavaScript로 문자열에서 홀수 길이의 단어만 뒤집는 방법

이번 튜토리얼에서는 문자열을 입력받아 홀수 개의 문자로 이루어진 단어만 골라 뒤집는 JavaScript 함수를 작성해 보겠습니다.

여기서 말하는 '단어'란 다음 조건 중 하나를 만족하는 부분 문자열을 의미합니다.

  • 양쪽이 공백으로 둘러싸여 있는 경우
  • 문자열의 시작 또는 끝에 위치하면서, 반대쪽이 공백으로 구분되는 경우

문제 예시

다음과 같은 문자열이 있다고 가정해 보겠습니다.

const str = 'hello beautiful people';

각 단어의 길이를 살펴보면 다음과 같습니다.

  • hello → 5글자 (홀수)
  • beautiful → 9글자 (홀수)
  • people → 6글자 (짝수)

따라서 뒤집어야 할 대상은 hellobeautiful 두 단어입니다.

구현 코드

이제 해당 기능을 수행하는 함수를 직접 작성해 보겠습니다.

const str = 'hello beautiful people';

// 문자열 길이가 홀수인지 판별하는 헬퍼 함수
const isOdd = str => str.length % 2 === 1;

// 홀수 길이의 단어만 뒤집는 메인 함수
const reverseOddWords = (str = '') => {
    const strArr = str.split(' ');
    return strArr.reduce((acc, val) => {
        if (isOdd(val)) {
            acc.push(val.split('').reverse().join(''));
            return acc;
        }
        acc.push(val);
        return acc;
    }, []).join(' ');
};

console.log(reverseOddWords(str));

코드 동작 원리

위 코드가 어떻게 동작하는지 단계별로 살펴보겠습니다.

  1. isOdd 함수: 문자열의 길이를 2로 나눈 나머지가 1인지 확인하여 홀수 여부를 판별합니다.
  2. split(' '): 입력된 문자열을 공백을 기준으로 분리해 단어 배열을 생성합니다.
  3. reduce 메서드: 각 단어를 순회하면서, 홀수 길이의 단어라면 split(''), reverse(), join('')을 연달아 호출해 문자를 역순으로 재배열한 뒤 결과 배열에 추가합니다. 짝수 길이의 단어는 그대로 유지됩니다.
  4. join(' '): 처리가 완료된 배열을 다시 공백으로 연결해 최종 문자열을 반환합니다.

실행 결과

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

olleh lufituaeb people

helloolleh로, beautifullufituaeb로 뒤집혔고, 짝수 길이인 people은 그대로 유지된 것을 확인할 수 있습니다.

마무리

이처럼 split, reduce, reverse 같은 배열 메서드를 조합하면 복잡한 문자열 변환 로직도 간결하게 구현할 수 있습니다. 특정 조건(길이, 포함 문자 등)에 따라 단어를 선택적으로 가공해야 하는 다양한 상황에서 응용해 보시기 바랍니다.