JavaScript memiliki replace()
metode objek String untuk mengganti substring. Metode ini dapat memiliki dua argumen. Argumen pertama dapat berupa string atau pola ekspresi reguler (objek regExp) dan argumen kedua dapat berupa string atau fungsi. Contoh replace()
metode yang memiliki kedua argumen string ditunjukkan di bawah ini.
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
Perhatikan bahwa jika argumen pertama adalah string, hanya kemunculan pertama dari substring yang diganti seperti pada contoh di atas. Untuk mengganti semua kemunculan substring Anda perlu memberikan ekspresi reguler dengan g
bendera (global). Jika Anda tidak memberikan flag global, hanya kemunculan substring pertama yang akan diganti bahkan jika Anda memberikan ekspresi reguler sebagai argumen pertama. Jadi mari kita ganti semua kejadian one
dalam contoh di atas.
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
Perhatikan bahwa Anda tidak membungkus pola ekspresi reguler dalam tanda kutip yang akan membuatnya menjadi string bukan objek regExp. Untuk melakukan penggantian case-insensitive Anda perlu memberikan flag tambahan i
yang membuat pola case-insensitive. Jika demikian, persamaan reguler di atas adalah /one/gi
. Perhatikani
bendera yang ditambahkan di sini.
Jika argumen kedua memiliki fungsi dan jika ada kecocokan fungsi dilewatkan dengan tiga argumen. Argumen fungsi yang didapat adalah kecocokan, posisi kecocokan dan teks asli. Anda harus mengembalikan pertandingan apa yang harus diganti. Sebagai contoh,
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
Anda dapat memiliki kontrol lebih besar atas teks pengganti menggunakan fungsi sebagai argumen kedua.
str_replace
juga menerima dua array dengan panjang yang sama, di mana setiap string dalam array pertama diganti dengan string dalam array kedua pada indeks yang sama. Silakan lihat stackoverflow.com/a/5069776/296430 untuk satu-satunya fungsi yang benar yang saya temukan sejauh ini yang meniru perilaku persis ini dalam javascript.