文字列内の文字の出現回数をカウントする必要があります。
たとえば、文字列に次の内容が含まれているとします。
var mainStr = "str1,str2,str3,str4";
カンマ文字の数 (3) を調べます。,
また、カンマで分割された後の個々の文字列の数 (4) を調べます。
また、各文字列 (str1、str2、str3、str4) が 15 文字を超えないことも検証する必要があります。
ベストアンサー1
この回答を更新しました。マッチを使用するアイデアの方が気に入っていますが、遅くなります。
console.log(("str1,str2,str3,str4".match(/,/g) || []).length); //logs 3
console.log(("str1,str2,str3,str4".match(new RegExp("str", "g")) || []).length); //logs 4
事前に検索対象がわかっている場合は正規表現リテラルを使用します。そうでない場合はコンストラクRegExp
ターを使用して、フラグをg
引数として渡すことができます。
match
結果が返さnull
れないため、|| []
2009 年に私が作成した元の回答は以下のとおりです。不必要に配列が作成されますが、分割を使用する方が高速です(2014 年 9 月現在)。私はどちらとも言えません。速度が本当に必要な場合は、間違いなく分割を使用しますが、一致を使用することをお勧めします。
古い回答(2009年):
カンマを探している場合:
(mainStr.split(",").length - 1) //3
strを探しているなら
(mainStr.split("str").length - 1) //4
@Loの回答と私自身の愚かな性能テスト少なくとも Chrome では、split の方が速度が速いですが、やはり余分な配列を作成するのは賢明ではないようです。