文字列に文字が何回出現するかを確認する簡単な方法はありますか?
文字列に文字が何回出現するかを確認する簡単な方法はありますか?
回答:
文字列内の他の文字を削除して、長さを確認できます。
str.replace(/[^a]/g, "").length
ここでは、に含まれるの数がカウントa
されstr
ます。
let xLength = str.replace(/[^a || A]/g, "").length;
let xLength = str.replace(/[^aA]/g, "").length;
これはa
、以下の例でカウントされます。
str = "A man is as good as his word";
alert(str.split('a').length-1);
大文字と小文字を区別しない場合は、次のようなものが必要です。
alert(str.split( new RegExp( "a", "gi" ) ).length-1);
「A」と「a」を取得するために...「g」フラグは実際には必要ありませんが、「i」フラグは必要です。
正規表現を使用して、文字列内の「a」の数を数えます。
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
これがどのように機能するかを説明しましょう:
string.match
これはRegExメソッドです。指定された文字列(この場合は文字列 "string")内で指定された正規表現を検索します。
(/a/gi)
これは実際の正規表現です。「文字aを見つけて」と書かれています。とても簡単です。また、「g」と「i」の2つのフラグもあります。「g」は、文字「a」のすべての出現を見つけることを意味します。それ以外の場合は、最初のものだけが検出され、1番を超えてカウントされることはありません。2番目のフラグは「i」です。これにより、正規表現はその文字のすべてのケースに一致します。そのフラグ(i)がない場合、上記のコードは文字列の大文字の「A」をスキップするため、4つしかカウントされません。「i」のため、大文字と小文字が一致します。大文字と小文字を一致させる場合は、「i」を削除します。
string.match
すべての一致の配列を返すため、このlength
メソッドを使用して配列エントリの数を取得します。そのような単純な!
a
」が含まれていない場合string
、にstring.match(/a/gi)
等しくなりnull
、エラーが発生することCannot read property 'length' of null
です。
あらゆる種類の文字を数えたいのであれば、2つの式を考慮する必要があるからです。以下のための一つの共通の文字とする第二の特別のような例えば文字[
、]
、^
というように。忘れがちですが、覚えていてもコードを不必要に拡張していると思います。
で、この場合、文字列のためのstr
文字ch
、これらのソリューションのそれぞれに動作します:
let count = str.split(ch).length - 1
または
let count = str.split('').filter(x => x == ch).length
または
let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
楽しい!
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
var a = "acvbasbb";
var b= {};
for (let i=0;i<a.length;i++){
if((a.match(new RegExp(a[i], "g"))).length > 1){
b[a[i]]=(a.match(new RegExp(a[i], "g"))).length;
}
}
console.log(b);