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


130

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

Answers:


256

可以执行以下操作,但只会替换一种情况:

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

对于全局替换,或者如果您更喜欢正则表达式,则只需要转义斜线即可:

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

3
第一个代码段不进行全局替换。不太确定如何以非正则表达式方式进行全局替换。
BoltClock

嗯,是的,我只用了一个斜杠就尝试了。可以这样做,"string".replace('/', 'ForwardSlash', 'g')但这是仅在Firefox afaik中有效的非标准参数。
Seldaek 2010年

1
"string".replace(/\//g, 'ForwardSlash');可以,但是从中删除/ g,它将不起作用。
johntrepreneur

1
@johntrepreneur g表示它是全局替换,即它将替换match的所有实例/。如果没有g,它将仅替换一个实例。如果删除/g,则由于最后一个/是结束定界符,因此会完全破坏正则表达式。
Seldaek

1
@RameshRajendran就是API的方式..默认情况下,它仅替换一次,然后在找到要替换的API时停止。另请参阅developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…–
Seldaek

27

使用带g修饰符的正则表达式文字,并使用反斜杠转义正斜杠,以免与定界符发生冲突。

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

7

不使用正则表达式(尽管仅在用户输入搜索字符串的情况下才这样做):

var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!' 

4

这是你想要的吗?

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

4

这对我来说变成"//"了正义"/"

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

2

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

str = 'this/that and/if';

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

1

您好,上述脚本中的一个小更正..上述脚本在显示输出时跳过第一个字符。

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

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


1
请注意,我不确定此方法的性能如何与建议的数组拆分/合并解决方案进行比较。
Christopher Lincoln'3

...迷迷糊糊...尝试使用更智能的语法突出显示来尝试其他IDE。不要依赖代码编辑器的颜色,而是相信有状态解析器的功能会在运行时正确地标记代码。
soletan 2012年

0

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

-1

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

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

如果要替换所有"g"标记,请添加标记

str.replace(new RegExp('/', 'g'), 'foobar');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.