如何在Javascript中使用replace()函数替换多个字符串

3

我猜这是一个简单的问题,但我正在学习...

我有这个:

var location = (jQuery.url.attr("host"))+(jQuery.url.attr("path"));
locationClean = location.replace('/',' ');

locationArray = locationClean.split(" ");

console.log(location);
console.log(locationClean);
console.log(locationArray);

这是我在Firebug中看到的内容:

stormink.net/discussed/the-ideas-behind-my-redesign
stormink.net discussed/the-ideas-behind-my-redesign
["stormink.net", "discussed/the-ideas-behind-my-redesign"]

所以由于某些原因,替换只发生了一次?我需要使用带有 "/g" 的正则表达式使其重复吗?如果是这样,如何在正则表达式中指定 "/"?(我很少理解如何使用正则表达式)。

谢谢大家。


糟糕!我问了之后就明白了...对不起大家!希望不会再发生了... - Ian Storm Taylor
6
然后回答你自己的问题。 - jason
4个回答

5

使用模式而不是字符串,您可以将其与“global”修饰符一起使用。

locationClean = location.replace(/\//g,' ');

3

当您使用字符串作为第一个参数时,replace方法仅替换第一次出现的内容。要替换所有出现的内容,您必须使用正则表达式:

locationClean = location.replace(/\//g,' ');

(由于斜杠字符被用来分隔正则表达式字面量,因此你需要使用反斜杠对表达式中的斜杠进行转义。)

不过,为什么你不直接在“/”字符上进行分割呢?


2
您可以直接使用“/”字符作为分隔符进行拆分:split
var loc =  location.host + location.pathname, // loc variable used for tesing
    locationArray = loc.split("/");

0

这可以从你的 JavaScript 中修复。

语法

stringObject.replace(findstring,newstring)

findstring: 必需。指定要查找的字符串值。要执行全局搜索,请在此参数中添加“g”标志,要执行不区分大小写的搜索,请添加“i”标志。

newstring: 必需。指定要替换从findstring找到的值的字符串。

以下是您的代码应该看起来的样子:

locationClean = location.replace(new RegExp('/','g'),' ');
locationArray = locationClean.split(" ");

请享受'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接