Jawaban:
Berikut ini akan dilakukan tetapi hanya akan menggantikan satu kejadian:
"string".replace('/', 'ForwardSlash');
Untuk penggantian global, atau jika Anda lebih suka ekspresi reguler, Anda hanya perlu menghindari tebasan:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')tetapi itu adalah argumen non-standar yang hanya berfungsi di Firefox afaik.
"string".replace(/\//g, 'ForwardSlash');berfungsi tetapi hapus / g dari ini dan tidak bekerja.
/. Tanpa g, itu hanya menggantikan satu instance. Dan jika Anda menghapus /gAnda melanggar regex sepenuhnya sejak yang terakhir / adalah pembatas akhir.
Tanpa menggunakan regex (meskipun saya hanya akan melakukan ini jika string pencarian adalah input pengguna):
var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!'
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"
Regex yang diusulkan /\//gtidak bekerja untuk saya; sisa baris ( //g, replacement);) dikomentari.
Ini adalah ide Christopher Lincolns tetapi dengan kode yang benar:
function replace(str,find,replace){
if (find != ""){
str = str.toString();
var aStr = str.split(find);
for(var i = 0; i < aStr.length; i++) {
if (i > 0){
str = str + replace + aStr[i];
}else{
str = aStr[i];
}
}
}
return str;
}
Contoh penggunaan:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
Penggantian string global Javascript tidak perlu rumit. Fungsi ini memecahkan masalah itu. Mungkin ada dampak kinerja yang kecil, tapi saya yakin itu bisa diabaikan.
Inilah fungsi alternatif , terlihat jauh lebih bersih, tetapi rata-rata sekitar 25 hingga 20 persen lebih lambat daripada fungsi di atas:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}