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() メソッドを使った方が応用が利くと思います。