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

JavaScript 문자열에서 단어 개수 세는 방법 – 함수 구현 예제

이번 글에서는 길이에 상관없이 문자열을 입력받아, 해당 문자열 안에 포함된 단어의 개수를 세어 반환하는 JavaScript 함수를 작성해 보겠습니다.

예제 코드

const str = 'THis is an example string';
const findWords = (str = '') => {
    if(!str.length){
        return 0;
    };
    let count = 1;
    for(let i = 0; i < str.length; i++){
        if(str[i] === ' '){
            count++;
        };
    };
    return count;
};
console.log(findWords(str));

출력 결과

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

5

코드 동작 원리

이 함수의 로직은 매우 직관적입니다.

  • 입력된 문자열이 비어 있다면 즉시 0을 반환합니다.
  • 단어가 하나 이상 존재한다고 가정하고 카운터(count)를 1로 초기화합니다.
  • 문자열을 한 글자씩 순회하면서 공백(' ')을 발견할 때마다 카운터를 1씩 증가시킵니다.
  • 순회가 끝나면 최종 카운트 값을 반환합니다.

더 간결한 대안: split() 활용하기

반복문 없이 split() 메서드와 정규 표현식을 조합하면 같은 기능을 한 줄로 구현할 수 있습니다.

const findWords = (str = '') => str.trim().split(/\s+/).filter(Boolean).length;

여기서 /\s+/ 정규식은 하나 이상의 연속된 공백을 의미하므로, 단어 사이에 공백이 여러 개 있어도 정확하게 개수를 셀 수 있습니다.

주의할 점

첫 번째 예제처럼 단순히 공백 문자만 세는 방식은 연속된 공백이 있을 경우 실제 단어 수보다 많게 계산될 수 있습니다. 따라서 사용자 입력처럼 형식이 일정하지 않은 문자열을 다룰 때는 trim()과 정규식 /\s+/을 함께 사용하는 두 번째 방식을 권장합니다.