Answers:
可以执行以下操作,但只会替换一种情况:
"string".replace('/', 'ForwardSlash');
对于全局替换,或者如果您更喜欢正则表达式,则只需要转义斜线即可:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')但这是仅在Firefox afaik中有效的非标准参数。
"string".replace(/\//g, 'ForwardSlash');可以,但是从中删除/ g,它将不起作用。
/。如果没有g,它将仅替换一个实例。如果删除/g,则由于最后一个/是结束定界符,因此会完全破坏正则表达式。
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);)已被注释掉。
这是Christopher Lincolns的想法,但是具有正确的代码:
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;
}