2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

match()で任意の文字数を取得する方法 〜javascript〜

Posted at

#指定文字の数をカウントする方法

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をとってくる。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?