JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列内の文字の出現回数を数える方法【サンプルコード付き】

JavaScriptで文字列の中に特定の文字が何回登場するかを調べたい場面はよくあります。ユーザー入力のバリデーションやテキスト解析などがその代表例です。この記事では、forループを使って文字の出現回数をカウントする方法を、実際に動作するサンプルコードとともに解説します。

forループで文字の出現回数を数える

以下のコードは、入力された文字列から指定した1文字を取り出し、その文字が文字列内に何回現れるかを数えて画面に表示するシンプルな例です。

サンプルコード

<!DOCTYPE html>
<html>
   <body>
      <script>
          function displayCount() {
             setTimeout(function() {
                var str = document.getElementById('str1').value;
                var letter = document.getElementById('letter1').value;
                letter = letter[letter.length-1];

                var lCount;
                for (var i = lCount = 0; i < str.length; lCount += (str[i++] == letter));
                document.querySelector('p').innerText = lCount;
                return lCount;
             }, 50);
          }
      </script>
      Enter String: <input type="text" id="str1"><br><br>
      Enter Letter: <input onkeypress="displayCount()" type="text" id="letter1"><br><br>
      <button onclick="displayCount()">Click for Result</button><br><br>
      result= <p></p>
   </body>
</html>

コードの解説

  • setTimeout():キー入力の直後でも値が確実に反映されるよう、50ミリ秒の遅延を設けています。
  • letter[letter.length-1]:入力欄の文字列から最後の1文字を取得します。これにより、キーを押すたびに最新の文字をカウント対象にできます。
  • for文によるカウントlCount += (str[i++] == letter) の部分で、各文字が対象と一致するたびにカウントが加算されます。比較結果の true / false は数値演算では 1 / 0 として扱われるため、このような簡潔な記述が可能です。
  • 結果の表示:計算結果は <p> 要素の innerText に出力され、ボタンをクリックするか文字を入力するだけで即座に確認できます。

もっと簡単に数える方法

ループを自前で書かなくても、標準メソッドを組み合わせれば短いコードで出現回数を求められます。

split() を使う方法

const str = "javascript";
const count = str.split("a").length - 1;
console.log(count); // 2

対象の文字を区切り文字として分割すると、生成される配列の要素数より1つ少ない数が出現回数になります。

match() を使う方法

const str = "javascript";
const count = (str.match(/a/g) || []).length;
console.log(count); // 2

正規表現にグローバルフラグ(g)を付けてマッチさせ、一致した件数を取得します。1件も一致しない場合は null が返るため、|| [] で空配列にフォールバックしている点に注意してください。

まとめ

文字の出現回数を数える基本は、forループで1文字ずつ比較する方法です。コードの簡潔さを重視するなら split()match() を活用すると便利です。大文字・小文字を区別せずに数えたい場合は、あらかじめ toLowerCase() などで文字列を揃えておくとよいでしょう。用途に応じて最適な方法を選んでください。

  1. Androidで文字列内の各文字の出現回数をカウントする方法【サンプルコード付き】

    この記事では、Androidで文字列内に各文字が何回出現するかをカウントする方法を、実際に動作するサンプルコードとともに解説します。EditTextに入力された文字列を解析し、HashMapを使って各文字の出現回数を集計してTextViewに表示する、シンプルなカウントアプリを作成していきましょう。 ステップ1:Android Studioで新規プロジェクトを作成する まずはAndroid Studioで新しいプロジェクトを作成します。メニューから「File」⇒「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。 ステップ2:レイアウトファイル(act

  2. Pythonで文字列内の母音の数を数える方法をわかりやすく解説

    Pythonで文字列内の母音の数を数える基本手順Pythonでは、シンプルなループ処理を使うことで、文字列に含まれる母音(a、e、i、o、u)の数を簡単に数えることができます。ここでは、初心者にもわかりやすいように、基本的な実装手順を順を追って解説します。ステップ1:母音をまとめた文字列を用意するまず、すべての母音を格納した文字列オブジェクトを宣言します。>>> vowels = aeiouステップ2:カウント用の変数を初期化する次に、母音の出現回数を記録するための変数を0で初期化します。>>> count = 0ステップ3:文字列を走査して母音を判定する対