Ответы:
Следующее подойдет, но заменит только одно вхождение:
"string".replace('/', 'ForwardSlash');
Для глобальной замены или если вы предпочитаете регулярные выражения, вам просто нужно избегать косой черты:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')но это нестандартный аргумент, который работает только в Firefox afaik.
"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;
}