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

JavaScript로 문자열 내 특수 문자 개수 세는 방법

다음과 같은 특수 문자들이 포함된 문자열이 있다고 가정해 보겠습니다.

'!', "," ,"'" ,";" ,'"', ".", "-" ,"?"

이번 글에서는 문자열을 입력받아 위 특수 문자들이 몇 번 등장하는지 계산하고, 그 개수를 반환하는 JavaScript 함수를 작성해 보겠습니다.

예제 코드

구현 코드는 다음과 같습니다.

const str = "This, is a-sentence;.Is this a sentence?";
const countSpecial = str => {
    const punct = "!,\;\.-?";
    let count = 0;
    for(let i = 0; i < str.length; i++){
        if(!punct.includes(str[i])){
            continue;
        };
        count++;
    };
    return count;
};
console.log(countSpecial(str));

출력 결과

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

5

코드 동작 원리

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

  • punct 변수에 개수를 세고자 하는 특수 문자들을 미리 정의해 둡니다.
  • for 반복문을 사용해 문자열의 각 문자를 하나씩 순회합니다.
  • includes() 메서드로 현재 문자가 punct에 포함되어 있는지 확인합니다.
  • 특수 문자가 아니라면 continue로 건너뛰고, 맞다면 count를 1 증가시킵니다.
  • 모든 문자를 확인한 후 최종 count 값을 반환합니다.

정규표현식을 활용한 대안

정규표현식을 사용하면 더욱 간결하게 같은 기능을 구현할 수 있습니다.

const countSpecialRegex = str => {
    const matches = str.match(/[!,\';\".\-?]/g);
    return matches ? matches.length : 0;
};
console.log(countSpecialRegex(str)); // 5

match() 메서드는 일치하는 모든 문자를 배열로 반환하므로, 배열의 길이를 통해 특수 문자의 개수를 바로 얻을 수 있습니다. 일치하는 문자가 없으면 null을 반환하기 때문에 삼항 연산자로 0을 반환하도록 처리했습니다.