Apakah ada cara sederhana untuk memeriksa berapa kali karakter muncul dalam String?
Apakah ada cara sederhana untuk memeriksa berapa kali karakter muncul dalam String?
Jawaban:
Anda dapat menghapus karakter lain dalam string dan memeriksa panjangnya:
str.replace(/[^a]/g, "").length
Di sini dihitung berapa banyak ayang masuk str.
let xLength = str.replace(/[^a || A]/g, "").length;
let xLength = str.replace(/[^aA]/g, "").length;
Ini dihitung a dalam contoh di bawah ini:
str = "A man is as good as his word";
alert(str.split('a').length-1);
Jika Anda ingin case insensitive Anda menginginkan sesuatu seperti
alert(str.split( new RegExp( "a", "gi" ) ).length-1);
Sehingga ia mengambil tanda "A" dan "a" ... "g" tidak terlalu dibutuhkan, tapi Anda memang membutuhkan tanda "i"
Gunakan RegEx untuk menghitung jumlah "a" dalam string.
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
Izinkan saya menjelaskan cara kerjanya:
string.matchIni adalah metode RegEx. Ini mencari RegEx yang ditentukan di dalam string yang ditentukan (dalam hal ini, string "string").
(/a/gi)Ini adalah RegEx yang sebenarnya. Bunyinya, "temukan karakter a." Sangat sederhana. Ia juga membawa dua bendera, "g" dan "i". Huruf "g" mengatakan untuk menemukan SEMUA kemunculan karakter "a". Kalau tidak, ia hanya akan menemukan yang pertama, dan ia tidak akan pernah bisa melewati nomor satu. Bendera kedua adalah "i". Itu membuat RegEx cocok dengan semua kasus dari karakter itu. Jika flag (i) tidak ada, kode di atas hanya akan menghitung 4, karena akan melewati huruf besar "A" dalam string. Karena "i", itu akan cocok dengan huruf besar dan kecil. Hapus "i" jika Anda ingin mencocokkan huruf besar-kecil.
string.matchmengembalikan array dari semua pertandingan, jadi kami menggunakan lengthmetode untuk mengambil jumlah entri array. Sederhana seperti itu!
a" di string, string.match(/a/gi)sama dengan nulldan Anda mendapatkan kesalahan Cannot read property 'length' of null.
Itu karena jika kita ingin dapat menghitung jenis karakter apa pun maka kita perlu mempertimbangkan dua ekspresi. Satu untuk umum karakter dan kedua untuk khusus karakter misalnya seperti [, ], ^dan sebagainya. Sangat mudah untuk melupakannya, tetapi bahkan jika kita mengingatnya, saya pikir kita tidak perlu memperluas kode kita.
Dalam kasus ini untuk string strdan karakter chberfungsi masing-masing solusi ini:
let count = str.split(ch).length - 1
(terima kasih kepada @Sarfraz )
atau
let count = str.split('').filter(x => x == ch).length
atau
let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
Nikmati!
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);