Yanıtlar:
Aşağıdakiler işe yarar, ancak yalnızca bir oluşumun yerini alır:
"string".replace('/', 'ForwardSlash');
Genel bir değişim için veya normal ifadeleri tercih ediyorsanız, eğik çizgiden kaçmanız gerekir:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')ancak bu yalnızca Firefox afaik'te çalışan standart dışı bir argümandır.
"string".replace(/\//g, 'ForwardSlash');çalışır, ancak / g'yi bundan kaldırın ve çalışmaz.
/. G olmadan yalnızca bir örneği değiştirir. Ve kaldırırsanız /g, normal ifadeyi son / bitiş sınırlayıcıdan itibaren tamamen kırmış olursunuz.
Normal ifade kullanmadan (ancak bunu yalnızca arama dizesi kullanıcı girdisi ise yapardım):
var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!'
İstediğiniz bu mu?
'string with / in it'.replace(/\//g, '\\');
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"
Önerilen normal ifade /\//gbenim için çalışmadı; satırın geri kalanı ( //g, replacement);) yorumlandı.
Bu Christopher Lincolns fikri ama doğru kodla:
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;
}
Örnek Kullanım:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
Javascript genel dize değişimi gereksiz yere karmaşıktır. Bu işlev, bu sorunu çözer. Muhtemelen küçük bir performans etkisi vardır, ancak bunun ihmal edilebilir olduğuna eminim.
Bu, alternatif bir işlevdir, çok daha temiz görünür, ancak ortalama olarak yukarıdaki işlevden yaklaşık yüzde 25 ila 20 daha yavaştır:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}