Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Melakukan Penggantian Rentetan Berbilang dalam JavaScript?

Bagaimana untuk Melakukan Penggantian Rentetan Berbilang dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-11-29 09:44:10
asal
649 orang telah melayarinya

How to Perform Multiple String Replacements in JavaScript?

Penggantian Rentetan Berbilang dalam JavaScript

Penggantian rentetan ialah tugas biasa dalam pengaturcaraan. Dalam JavaScript, kaedah replace() membolehkan anda menggantikan satu padanan rentetan tertentu dengan yang baharu. Walau bagaimanapun, bagaimana jika anda ingin menggantikan berbilang rentetan dengan berbilang rentetan lain pada masa yang sama?

Pertimbangkan contoh berikut:

var str = "I have a cat, a dog, and a goat.";

// Attempt to replace multiple strings with incorrect results
str = str.replace(/cat/gi, "dog");
str = str.replace(/dog/gi, "goat");
str = str.replace(/goat/gi, "cat");

// Output: "I have a cat, a cat, and a cat"
Salin selepas log masuk

Seperti yang anda lihat, ini tidak menghasilkan yang diingini hasil daripada "Saya mempunyai seekor anjing, seekor kambing dan seekor kucing." Sebaliknya, ia secara salah menggantikan setiap contoh "kucing" dengan "anjing," dan seterusnya.

Penyelesaian Khusus

Untuk mencapai hasil yang diinginkan, anda boleh menggunakan berfungsi untuk mengendalikan setiap penggantian:

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];
});

// Output: "I have a dog, a goat, and a cat"
Salin selepas log masuk

Dalam pendekatan ini, kami mencipta objek peta (mapObj) yang mentakrifkan pasangan rentetan nilai kunci untuk diganti. Kemudian, kami menggunakan ungkapan biasa yang sepadan dengan mana-mana rentetan ini dan menggantikannya dengan nilai yang sepadan daripada objek peta.

Mengerti Penyelesaian

Untuk menyamaratakan pendekatan ini , anda boleh mencipta ungkapan biasa secara dinamik dan mengemas kini objek peta seperti yang diperlukan:

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];
});
Salin selepas log masuk

Pendekatan ini membolehkan anda menambah atau mengalih keluar penggantian berpasangan tanpa mengubah suai ungkapan biasa itu sendiri.

Fungsi Boleh Guna Semula

Untuk merumuskan lagi proses, anda boleh mencipta fungsi boleh guna semula:

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
Salin selepas log masuk

Anda kemudiannya boleh menggunakan fungsi ini untuk menggantikan berbilang rentetan dengan berbilang rentetan lain dalam mana-mana rentetan tertentu.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Penggantian Rentetan Berbilang dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan