Menggantikan rentetan dalam JavaScript menggunakan berbilang lelaran kaedah replace() ialah teknik biasa. Walau bagaimanapun, ia boleh membawa kepada hasil yang tidak diingini apabila cuba menggantikan berbilang rentetan dengan penggantian yang berbeza.
Untuk menangani perkara ini, fungsi boleh digunakan untuk melakukan penggantian secara individu:
var str = "I have a cat, a dog, and a goat."; var mapObj = { cat:"dog", dog:"goat", goat:"cat" }; str = str.replace(/cat|dog|goat/gi, function(matched){ return mapObj[matched]; });
MapObj mentakrifkan penggantian dan ungkapan biasa sepadan dengan mana-mana kekunci.
Untuk menjadikan penyelesaian lebih fleksibel, ungkapan biasa dinamik boleh dijana berdasarkan kekunci mapObj. Ini memastikan bahawa fungsi boleh mengendalikan sebarang bilangan penggantian:
var mapObj = {cat:"dog",dog:"goat",goat:"cat"}; var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); str = str.replace(re, function(matched){ return mapObj[matched]; });
Untuk menjadikan penyelesaian boleh diguna semula, ia boleh dirangkumkan dalam fungsi:
function replaceAll(str,mapObj){ var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); return str.replace(re, function(matched){ return mapObj[matched.toLowerCase()]; }); }
Fungsi ini mengambil rentetan dan peta gantian serta mengembalikan rentetan yang diubah.
Untuk menggunakan fungsi, hanya masukkan rentetan dan penggantian yang dikehendaki:
var str = "This is a test sentence."; var replaceObj = { This: "That", is: "was", a: "an" }; var result = replaceAll(str, replaceObj); console.log(result); // "That was an test sentence."
Dengan menggunakan pendekatan ini, anda boleh melakukan penggantian rentetan berbilang dalam JavaScript dengan mudah, memastikan setiap penggantian dilakukan dengan betul.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan Berbilang Rentetan secara serentak dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!