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

JavaScript에서 문자열의 모음 개수 구하는 방법 완벽 정리

문자열에서 모음 개수 세기

영어의 모음은 a, e, i, o, u 다섯 개입니다. 문자열을 처리할 때는 이 모음들이 소문자 또는 대문자 어느 쪽으로든 나타날 수 있다는 점을 반드시 고려해야 합니다.

동작 원리

다음 예제는 사용자 정의 함수 noOfVowels()를 사용하여 입력 문자열을 읽고, 모음만 담고 있는 문자열('aAeEiIoOuU')과 한 글자씩 비교합니다. 이 과정에서 indexOf() 메서드가 핵심 역할을 합니다.

indexOf() 메서드는 찾으려는 문자가 대상 문자열에 존재하면 해당 문자의 인덱스를 반환하고, 존재하지 않으면 -1을 반환합니다. 따라서 입력 문자열의 각 문자를 모음 문자열과 비교했을 때 결과가 -1이 아니라면 그 문자는 모음이라는 뜻입니다. 이때마다 초기값이 0인 변수 vowelsCount를 1씩 증가시키고, 반복이 끝나면 최종 값을 반환하여 출력합니다.

예제

<html>
<body>
<script>
    function noOfVowels(string) {
        var listOfVowels = 'aAeEiIoOuU';
        var vowelsCount = 0;
        for(var i = 0; i < string.length ; i++) {
            if (listOfVowels.indexOf(string[i]) !== -1) {
                vowelsCount += 1;
            }
        }
    return vowelsCount;
    }
    document.write(noOfVowels("Tutorix is one of the best e-platforms"));
</script>
</body>
</html>

출력

12

정규식을 활용한 더 간결한 방법

match() 메서드와 정규식을 사용하면 위 로직을 훨씬 짧은 코드로 구현할 수 있습니다. 정규식 /[aeiou]/gi에서 i 플래그는 대소문자를 구분하지 않도록 하므로, 별도로 대문자 모음을 나열할 필요가 없습니다.

function noOfVowels(string) {
    return (string.match(/[aeiou]/gi) || []).length;
}

console.log(noOfVowels("Tutorix is one of the best e-platforms")); // 12

모음이 하나도 없는 경우 match()null을 반환하므로, || []를 추가해 빈 배열로 처리하면 오류 없이 0을 반환할 수 있습니다.