Bir String'de bir karakterin kaç kez göründüğünü kontrol etmenin basit bir yolu var mı?
Yanıtlar:
Dizedeki diğer karakterleri kaldırabilir ve uzunluğunu kontrol edebilirsiniz:
str.replace(/[^a]/g, "").length
İşte kaç sayılır aiçindedir s str.
let xLength = str.replace(/[^a || A]/g, "").length;
let xLength = str.replace(/[^aA]/g, "").length;
Bu a , aşağıdaki örnekte sayılır :
str = "A man is as good as his word";
alert(str.split('a').length-1);
Büyük / küçük harf duyarlı olmasını istiyorsanız, şöyle bir şey istersiniz:
alert(str.split( new RegExp( "a", "gi" ) ).length-1);
"A" ve "a" ... "g" bayrağını yakalaması için gerçekten gerekli değil, ancak "i" bayrağına ihtiyacınız var
Bir dizedeki "a" sayısını saymak için bir Normal İfade kullanın.
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
Bunun nasıl çalıştığını açıklamama izin verin:
string.matchBu bir RegEx yöntemidir. Belirtilen dizenin içinde belirtilen Normal İfadeyi arar (bu durumda, "dize" dizesi).
(/a/gi)Bu gerçek Normal İfadedir. "A karakterini bul" yazıyor. Çok basit. Ayrıca "g" ve "i" olmak üzere iki bayrak taşır. "G", "a" karakterinin TÜM oluşumlarını bulmayı söyler. Aksi takdirde sadece ilkini bulur ve bir numarayı asla geçmez. İkinci bayrak "i" dir. RegEx'in bu karakterin tüm durumlarını eşleştirmesini sağlar. Eğer bu bayrak (i) orada olmasaydı, yukarıdaki kod sadece 4'ü sayardı, çünkü dizedeki büyük "A" harfini atlardı. "İ" nedeniyle, büyük ve küçük harflerle eşleşecektir . Büyük / küçük harf eşleştirmek istiyorsanız "i" harfini kaldırın.
string.matchtüm eşleşmelerin bir dizisini döndürür, bu nedenle lengthdizi girdilerinin sayısını almak için yöntemi kullanırız. Bu kadar basit!
aiçinde" string, sonra string.match(/a/gi)eşittir nullve hata var Cannot read property 'length' of null.
Çünkü herhangi bir tür karakteri sayabilmek istiyorsak, iki ifadeyi dikkate almamız gerekir. One ortak karakterler ve ikinci özel gibi örneğin karakterler [, ], ^vb. Unutmak kolaydır, ancak hatırlasak bile, kodumuzu gereksiz yere genişlettiğimizi düşünüyorum.
In Bu durumda dizesi strve karakter chbu çözümlerin her biri çalışır:
let count = str.split(ch).length - 1
( @ Sarfraz'a teşekkürler )
veya
let count = str.split('').filter(x => x == ch).length
veya
let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
Zevk almak!
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);