[Js/자바스크립트] 문자열의 특정 문자 개수 세는 방법

웹 페이지 개발을 하다보면 다양한 요구사항들이 생기기 마련입니다. 저도 자바스크립트의 다양한 함수에 대해서 공부를 진행하면서 여러가지 고민을 하게됩니다.

제가 했던 고민들 중 js의 문자열과 관련된 문제 중 하나인 문자열 내의 특정 문자의 개수를 세는 방법에 대해서 소개해드리려고 합니다.

문자열의 특정 문자 개수 세는 방법

var text = 'aaabbbaaabababaaaabaa';

위와 같은 형태의 문자열이 있을 때, a의 개수와 b의 개수를 알고 싶다면 어떻게 해야할까요?

String.prototype.indexOf()

str.indexOf(searchValue[, fromIndex])

자바스크립트의 문자열과 관련된 indexOf라는 빌트인 함수가 있습니다. 이 함수는 문자열 내의 특정 문자를 포함하는 가장 첫 번째 인덱스를 반환합니다.

이 함수를 적절하게 이용하면 앞서 질문드렸던 문제를 해결할 수 있습니다.

fromIndex 사용 방법

var text = 'abbabbbba';

text.indexOf('a');     // 0
text.indexOf('a', 1);  // 3
text.indexOf('a', 3);  // 3
text.indexOf('a', 4);  // 8

indexOf의 두 번째 파라미터인 fromIndex를 사용하면 위와 같이 검색의 시작 위치를 변경할 수 있습니다.

문자열 내의 특정 문자 개수 세기 예제

var text = 'aaabbbaaabababaaaabaa';
var count = 0;
var searchChar = 'a'; // 찾으려는 문자
var pos = text.indexOf(searchChar); //pos는 0의 값을 가집니다.

while (pos !== -1) {
  count++;
  pos = text.indexOf(searchChar, pos + 1); // 첫 번째 a 이후의 인덱스부터 a를 찾습니다.
}

console.log(count); // 로그에 14를 출력합니다.

위 코드는 aaabbbaaabababaaaabaa라는 문자열에서 a라는 문자가 몇 개가 있는지 셀 수 있는 예제입니다.

위 코드에서 검색하려는 문자를 a에서 b로 변경하면 b가 몇 개가 있는지도 확인할 수 있습니다.

참고 문서

맺음

간단하게 문자열에서 특정 문자의 개수를 세는 방법에 대해서 소개해봤습니다. 혹시 궁금하신 점이나 이상한 점이 있으시면 댓글 부탁드리겠습니다.

감사합니다.

Buy me a coffee
글이 도움이 되셨다면, 커피 한 잔만 사주세요!
Comments
Copied to clipboard