다음과 같은 특수 문자들이 포함된 문자열이 있다고 가정해 보겠습니다.
'!', "," ,"'" ,";" ,'"', ".", "-" ,"?"
이번 글에서는 문자열을 입력받아 위 특수 문자들이 몇 번 등장하는지 계산하고, 그 개수를 반환하는 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)); // 5match() 메서드는 일치하는 모든 문자를 배열로 반환하므로, 배열의 길이를 통해 특수 문자의 개수를 바로 얻을 수 있습니다. 일치하는 문자가 없으면 null을 반환하기 때문에 삼항 연산자로 0을 반환하도록 처리했습니다.