Apakah ada cara sederhana untuk memeriksa berapa kali karakter muncul dalam String?
javascript
string
Ruth
sumber
sumber
Jawaban:
Anda dapat menghapus karakter lain dalam string dan memeriksa panjangnya:
str.replace(/[^a]/g, "").length
Di sini dihitung berapa banyak
a
yang masukstr
.sumber
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"
sumber
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.match
Ini 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.match
mengembalikan array dari semua pertandingan, jadi kami menggunakanlength
metode untuk mengambil jumlah entri array. Sederhana seperti itu!sumber
a
" distring
,string.match(/a/gi)
sama dengannull
dan Anda mendapatkan kesalahanCannot read property 'length' of null
.Menurut pendapat saya, akan lebih mudah dan aman untuk menghindari ekspresi reguler dalam kasus ini
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
str
dan karakterch
berfungsi 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!
sumber
var s = "dqsskjhfds"; alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
sumber
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);
sumber