如何在全局范围内替换 JavaScript 字符串中的正斜杠?

如何在全局范围内替换 JavaScript 字符串中的正斜杠?

217726 次浏览

使用带有 g修饰符的 regex 文本,并用反斜杠转义正斜杠,这样它就不会与分隔符冲突。

var str = 'some // slashes', replacement = '';
var replaced = str.replace(/\//g, replacement);

这就是你想要的吗?

'string with / in it'.replace(/\//g, '\\');

以下内容可以,但只能取代一种情况:

"string".replace('/', 'ForwardSlash');

对于全局替换,或者如果你喜欢正则表达式,你只需要转义斜杠:

"string".replace(/\//g, 'ForwardSlash');

不使用正则表达式(尽管我只在搜索字符串是用户输入时才这样做) :

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);)被注释掉了。

这对我把 "//"变成仅仅 "/"很有效。

str.replace(/\/\//g, '/');

嗨,在上面的脚本中有一个小小的更正。 上面的脚本在显示输出时跳过第一个字符。

function stripSlashes(x)
{
var y = "";
for(i = 0; i < x.length; i++)
{
if(x.charAt(i) == "/")
{
y += "";
}
else
{
y+= x.charAt(i);
}
}
return y;
}

您需要包装正斜杠,以避免跨浏览器问题或//注释掉。

str = 'this/that and/if';


var newstr = str.replace(/[/]/g, 'ForwardSlash');

这是克里斯托弗•林肯(Christopher Lincoln)的想法,但代码正确:

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;
}

您可以创建一个 RegExp对象,使其更具可读性

str.replace(new RegExp('/'), 'foobar');

如果要替换所有这些标志,请添加 "g"标志

str.replace(new RegExp('/', 'g'), 'foobar');