#指定文字の数をカウントする方法
matchの使用方法は
基本的に
文字列.match(検索文字)
MDN:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/match
let test = "あいうえおあいうえおかきくけこ";
let count = test.match('あ')
// let count = test.match(/あ/)←正規表現を使うとこれでも同じ結果に
console.log(count)
//結果は [ 'あ', index: 0, input: 'あいうえおあいうえおかきくけこ', groups: undefined ]
上記ではテキストの検索したい文字の最初にヒットした値を取得していることがわかる。
ここで「あ」の文字数をとりたい時は「.length」を使用する。
let test = "あいうえおあいうえおかきくけこ";
let count = test.match('あ').length // ここに「.length」の記述を追加
// let count = test.match(/あ/).length←正規表現を使うとこれでも同じ結果に
console.log(count)
//結果は 1
しかし「あ」は変数testには2つある、、
そんな時に使うものが「g」
この正規表現gについては
MDN:https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
参考記事:https://qiita.com/mokoaki/items/4740c9bd921d2b8d3d82
が分かりやすい
簡単にいうとgを使うと
検索文字列全体に繰り返し検索をするということ
let test = "あいうえおあいうえおかきくけこ";
let count = test.match(/あ/g).length
console.log(count)
//結果は 2
**「/あ/」**のあとにgを追加したことで全体を繰り返し処理して数を取得している。
また、検索文字がテキスト似なかった場合に0を返したい時はこう書ける
let test = "あいうえおあいうえおかきくけこ";
let count = (test.match(/さ/g) || []).length //ここに追加文あり
console.log(count)
//結果は 0
「||」を使用して「さ」の値が取れないときは空の配列を代入しlengthを0にしている。
##その他使用例
//基本的なやり方
let sentence = '今日は良い天気。こんな日は外にでで遊びに行きたい。お天気は良いなあ'
let count = (sentence.match(/良い/g)).length
console.log(count)//結果は2
//検索文字がない場合に0を返したい時
let count2 = (sentence.match(/くもり/g) || []).length
console.log(count2)//結果は0
//ここでは最初に実行したくもりの検索がヒットしない時(falseがキーなのかは未検証)||以降の検索を元に
//lengthをとってくる。