JavaScript에서 문자열을 입력받아 그 안에 포함된 알파벳(대문자 또는 소문자)의 개수를 세는 함수를 작성해 보겠습니다. 공백, 숫자, 특수문자 등은 제외하고 순수하게 영문자만 카운트하는 것이 핵심입니다.
문제 이해하기
예를 들어 입력 문자열이 다음과 같다면,
const str = 'this is a string!';
공백과 느낌표(!)를 제외한 알파벳은 총 13개이므로 출력 결과는 다음과 같아야 합니다.
13
구현 방법
먼저 주어진 문자가 알파벳인지 판별하는 헬퍼 함수 isAlpha를 만들고, 문자열을 한 글자씩 순회하면서 알파벳인 경우에만 카운트를 증가시키는 방식으로 해결할 수 있습니다.
const str = 'this is a string!';
// 해당 문자가 알파벳인지 확인하는 함수
const isAlpha = char => {
const legend = 'abcdefghijklmnopqrstuvwxyz';
return legend.includes(char.toLowerCase());
};
// 문자열 내 알파벳 개수를 세는 함수
const countAlphabets = (str = '') => {
let count = 0;
for(let i = 0; i < str.length; i++){
if(!isAlpha(str[i])){
continue;
}
count++;
}
return count;
};
console.log(countAlphabets(str));
코드 설명
- isAlpha 함수: 소문자 알파벳 전체를 담은 문자열(
legend)에 해당 글자가 포함되어 있는지includes()로 확인합니다.toLowerCase()를 적용했기 때문에 대문자도 정상적으로 처리됩니다. - countAlphabets 함수:
for반복문으로 문자열을 한 글자씩 검사하며, 알파벳이 아닌 문자(공백, 특수문자 등)는continue로 건너뛰고 알파벳인 경우에만 카운트를 1씩 증가시킵니다.
실행 결과
콘솔에 다음과 같이 출력됩니다.
13
이처럼 간단한 헬퍼 함수와 반복문만으로도 문자열에서 알파벳 개수를 손쉽게 계산할 수 있습니다. 참고로 정규표현식(/[a-zA-Z]/g)과 match() 메서드를 활용하면 더욱 간결하게 구현할 수도 있습니다.