Відповіді:
Виконує наступне, але замінить лише одне виникнення:
"string".replace('/', 'ForwardSlash');
Для глобальної заміни або якщо ви віддаєте перевагу регулярним виразам, вам просто потрібно уникати косої риси:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')але це нестандартний аргумент, який працює лише у afaik Firefox.
"string".replace(/\//g, 'ForwardSlash');працює, але видаліть / g з цього, і він не працює.
/. Без g він замінює лише один екземпляр. А якщо ви вилучите, /gви повністю зламаєте регулярний вираз із останнього / є роздільником кінця.
Без використання регулярного вираження (хоча я б це зробив лише у випадку, якщо пошуковий рядок є вводом користувача):
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"
Запропонований регулярний вираз /\//gдля мене не спрацював; решта рядка ( //g, replacement);) прокоментували.
Це ідея Крістофера Лінкольнса, але з правильним кодом:
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;
}
Приклад використання:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
Заміна глобальної строки Javascript є надмірно складною. Ця функція вирішує цю проблему. Напевно, невеликий вплив на продуктивність, але я впевнений, що це незначно.
Ось альтернативна функція, виглядає набагато чистіше, але в середньому приблизно на 25 - 20 відсотків повільніше, ніж зазначена вище функція:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}