Odpowiedzi:
Poniższe rozwiązanie wystarczy, ale zastąpi tylko jedno wystąpienie:
"string".replace('/', 'ForwardSlash');
W przypadku globalnej zamiany lub jeśli wolisz wyrażenia regularne, wystarczy, że unikniesz ukośnika:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')ale jest to niestandardowy argument, który działa tylko w Firefoksie afaik.
"string".replace(/\//g, 'ForwardSlash');działa, ale usuwa / g z tego i nie działa.
/. Bez g zastępuje tylko jedną instancję. A jeśli usuniesz /g, całkowicie złamiesz wyrażenie regularne, ponieważ ostatnie / jest ogranicznikiem końca.
Bez użycia wyrażenia regularnego (chociaż zrobiłbym to tylko wtedy, gdy ciąg wyszukiwania jest wprowadzony przez użytkownika):
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"
Proponowane wyrażenie regularne /\//gnie działa dla mnie; reszta linii ( //g, replacement);) została zakomentowana.
To jest pomysł Christophera Lincolna, ale z poprawnym kodem:
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;
}
Przykładowe zastosowanie:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
Globalna zamiana ciągu znaków w JavaScript jest niepotrzebnie skomplikowana. Ta funkcja rozwiązuje ten problem. Prawdopodobnie ma to niewielki wpływ na wydajność, ale jestem pewien, że jest on pomijalny.
Oto alternatywna funkcja, wygląda znacznie czyściej, ale jest średnio o około 25 do 20 procent wolniejsza niż powyższa funkcja:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}