JavaScript: 特定の文字の数をカウントする方法

文字列の中から、特定の文字の数をカウントする方法を紹介します。

最初にString オブジェクトの match() メソッドを使った方法を紹介し、 次にループで1文字ずつカウントする方法を紹介します。

どちらも検索対象文字列を「abc cat bat that dog aa」 として、 特定文字 「a」が何個あるかをカウントします。

String オブジェクトの match() メソッドを使う

String オブジェクトの match() メソッドを使ったカウントは次のようになります。


var str = 'abc cat bat that dog aa';
var count = 0;  // 文字数を格納

var ex = /a/g;  // 正規表現

var arr = str.match(ex);

if (arr == null){
    count = 0;
}else{
    count = arr.length;
}

console.log(arr);  // Array [ "a", "a", "a", "a", "a", "a" ]
console.log(count);  // 6

String オブジェクトの match() メソッドは、マッチした文字列を配列で返し、 マッチしな場合は null を返します。

正規表現での「g」オプションを忘れないように付けてください。

関連記事: match() マッチした文字列を取得する

ループで1文字づつ数える


var str = 'abc cat bat that dog aa';
var count = 0;  // 文字数を格納

var strSearch = 'a';  // 探す文字

for (var i = 0; i < str.length; i++){
    if (str[i] == strSearch){
        count ++;
    }
}

console.log(count);  // 6

ループで1文字ずつ数える場合は、上のようなコードになります。 for 文で回しているだけですから、シンプルです。

探す文字が1文字だけならこのロジックでいいのですが、 2文字以上になると修正が必要です。

複数文字をカウントする場合も考慮すれば、 最初の match() メソッドを使った方が応用が利くと思います。

JavaScript入門