Dalam artikel sebelumnya "Bagaimana js mengetahui sama ada subrentetan yang diberikan wujud", kami memperkenalkan kaedah untuk mendapatkan kedudukan kejadian pertama atau terakhir subrentetan dalam rentetan. Kali ini kita meningkatkan kesukaran dan melihat cara mendapatkan semua kejadian subrentetan dalam rentetan.
Kami mengetahui dalam artikel sebelumnya bahawa kami boleh menggunakan fungsi indexOf() dan lastIndexOf() untuk mendapatkan kedudukan kejadian pertama dan terakhir subrentetan jika subrentetan tidak ditemui, -1 dikembalikan .
Kedua-dua fungsi boleh menerima parameter kedua pilihan start
Nilai hanya boleh menjadi integer, menunjukkan tempat untuk mula mencari dalam rentetan ialah 0
~ length-1
. lastIndexOf() Jika parameter mula ditentukan, cari dari belakang ke hadapan pada kedudukan yang ditentukan dalam rentetan.
Menggunakan permulaan parameter kedua pilihan ini dan pernyataan gelung, kita boleh mengira semua kejadian subrentetan tertentu (mengandungi satu atau lebih aksara).
Pertama lihat cara menggunakan indexOf() untuk mengira semua kejadian aksara tertentu dalam rentetan
var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit"; var positions = new Array(); var pos = stringValue.indexOf("e"); while(pos > -1){ positions.push(pos); //将出现位置赋给数组 pos = stringValue.indexOf("e",pos + 1); //从给定字符出现位置的后一位开始查找 } console.log(positions);//"3,24,32,35,52"
Analisis: Mula-mula gunakan indexOf("e")
untuk mendapatkan kejadian pertama dan tetapkan nilai Beri pos pembolehubah; kemudian gunakan pernyataan while untuk memanggil indexOf() melalui gelung, tetapkan kedudukan permulaan carian secara berterusan kepada "pos 1
", mula mencari dari digit terakhir kedudukan kejadian aksara yang diberikan, dan dapatkan kedudukan kejadian seterusnya; sehingga Jika tidak dijumpai, kembalikan -1 hingga tamat. Oleh itu, hasil output ialah:
Dapat dilihat bahawa aksara yang diberikan "e
" muncul 5 kali dalam stringValue rentetan, kerana kedudukan rentetan bermula pada 0 , bukan 1, jadi kedudukan yang muncul ialah 3, 24, 32, 35, dan 52 masing-masing.
Kemudian mari kita lihat cara menggunakan lastIndexOf() untuk mengira semua kejadian aksara tertentu dalam rentetan
var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit"; var positions = new Array(); var pos = stringValue.lastIndexOf("e"); while(pos > -1){ positions.push(pos); pos = stringValue.lastIndexOf("e",pos - 1); } console.log(positions);//"3,24,32,35,52"
Analisis: Gunakan lastIndexOf() untuk mendapatkan semua kejadian bagi aksara dan penggunaan indexOf() adalah hampir sama, kecuali lastIndexOf() mengembalikan kedudukan kejadian terakhir, jadi setiap kali kita gelung, kita perlu menetapkan kedudukan permulaan carian kepada "pos - 1".
Lihat output:
Ia boleh dilihat bahawa aksara yang diberikan "e" yang diperoleh adalah dalam susunan terbalik dalam semua kedudukan kejadian stringValue , susunannya ialah: 52, 35, 32, 24, 3.
Baiklah, itu sahaja jika anda memerlukannya, anda boleh membaca: Tutorial JavaScript Lanjutan
Atas ialah kandungan terperinci Pembelajaran rentetan JS: Kira semua kedudukan kejadian bagi aksara tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!