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

JavaScriptで文字列に含まれる特殊文字の出現回数を数える方法

問題の概要

たとえば、次のような特殊文字(記号)が含まれている可能性のある文字列を考えてみましょう。

'!' , "," , "'" , ";" , "\"" , "." , "-" , "?"

ここでの課題は、文字列を引数として受け取り、その文字列の中にこれらの特殊文字が何回出現するかを数え、その合計数を返すJavaScript関数を記述することです。

実装コード

この処理を実現するコードは次のとおりです。

const str = "This, is a-sentence;.Is this a sentence?";
const countSpecial = str => {
    const punct = "!,\\;.-?";
    let count = 0;
    for(let i = 0; i < str.length; i++){
        if(!punct.includes(str[i])){
            continue;
        }
        count++;
    }
    return count;
};
console.log(countSpecial(str));

実行結果

コンソールには以下のように出力されます。

5

コードの解説

このコードの仕組みは非常にシンプルです。まず、対象となる特殊文字の一覧を punct 変数に格納し、for ループで元の文字列を1文字ずつ順番にチェックしていきます。String.prototype.includes() メソッドを使い、現在の文字が punct に含まれていない場合は continue でスキップし、含まれていればカウンターを1つ増やします。ループが完了した時点のカウント値が、文字列内における特殊文字の総出現回数となります。

今回のサンプル文字列「This, is a-sentence;.Is this a sentence?」には、「,」「-」「;」「.」「?」の5つの特殊文字が含まれているため、結果として 5 が出力されます。対象とする記号を追加したい場合は、punct の文字列にそのまま追記するだけで対応できるので、拡張性の高いアプローチです。

  1. JavaScriptで文字列を出現頻度の高い順に並べ替える方法

    問題 文字列を唯一の引数として受け取るJavaScript関数を作成します。 この関数は、元の文字列をもとに新しい文字列を生成し、出現回数が最も多い文字を先頭に配置し、以降は出現頻度の高い順(降順)に残りの文字を並べる必要があります。 たとえば、関数への入力が次の場合: const str = free; 出力は次のようになります。 const output = eefr; 出力の解説 eは2回出現するため先頭に配置され、その後に出現回数が1回ずつのfとrが続きます。 サンプルコード この問題を解くコードは以下の通りです。 const str = free; const frequency

  2. JavaScriptで文字列内の文字を英字・数字・特殊文字に再グループ化する方法

    問題文字列 str を第一引数(唯一の引数)として受け取る JavaScript 関数を作成する必要があります。この文字列には、次の3種類の文字が含まれる可能性があります。英字:(A-Z)、(a-z)数字:0〜9特殊文字:上記以外のすべての文字関数は文字列を先頭から順に走査し、ちょうど3つの要素からなる配列を構築します。1番目の要素には文字列に含まれるすべての英字、2番目には数字、3番目には特殊文字を格納し、それぞれ元の文字列内での出現順(相対的な順序)を維持します。最後にこの配列を返します。例えば、関数への入力が次の場合を考えてみましょう。入力const str = thi!1s is S@