JavaScript: Berapa kali karakter muncul dalam string?


Jawaban:


82

Anda dapat menghapus karakter lain dalam string dan memeriksa panjangnya:

str.replace(/[^a]/g, "").length

Di sini dihitung berapa banyak ayang masuk str.


1
Hanya ingin menunjukkan bahwa Anda dapat memperhitungkan huruf besar juga dengan melakukan let xLength = str.replace(/[^a || A]/g, "").length;
HappyHands31

@ HappyHands31 Maksud Andalet xLength = str.replace(/[^aA]/g, "").length;
Donald Duck

46

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"


1
@Josh Itu tergantung pada apa yang disukai semua orang. Misalnya saya suka jawaban ini karena mudah dibaca. Tetapi orang lain akan lebih suka jawaban lain karena lebih teknis, atau menantang, orang lain akan lebih suka jawaban lain karena makan lebih sedikit cpu dan seterusnya .. itulah mengapa JavaScript sangat bagus, rasa kebebasan.
vdegenne

21

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!


Saya pikir Anda harus menghapus i dari gi, itu adalah sumber kesalahan. Anda dapat menambahkannya sebagai bonus, tetapi dalam kasus saya, saya secara khusus mencari kecocokan case-sensitive.
Gismo Ranas

2
Masalahnya di sini adalah jika Anda tidak memiliki " a" di string, string.match(/a/gi)sama dengan nulldan Anda mendapatkan kesalahan Cannot read property 'length' of null.
pbialy

1
Bagian 'gi' sangat membantu, Pak @Drazzah
Jason Sebring

15

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 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!


4
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string

1
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);

1
Meskipun cuplikan kode Anda mungkin menyelesaikan masalah, Anda harus menjelaskan apa tujuan kode Anda (bagaimana cara memecahkan masalah). Selanjutnya, Anda mungkin ingin memeriksa stackoverflow.com/help/how-to-answer
Ahmad F

@AhmadF Anda dapat menggunakan ini untuk> Berapa kali karakter muncul dalam string. dan ketika Anda menjalankan skrip ini, Anda akan mendapatkan objek dengan properti (karakter) yang muncul lebih dari sekali.
Nitin.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.