2009-08-14 57 views
3

我猜这是一个简单的问题,但我只是学习代替()多串......如何替换在Javascript

我有这样的:

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”来重复它?如果是这样,我如何在Regex中指定'/'? (我很少理解如何使用Regex)。

谢谢大家。

+0

妈的!我问到后,我就对了......对不起每个人!不会再发生......(希望)。 – 2009-08-14 21:12:08

+6

然后回答你自己的问题。 – jason 2009-08-14 21:14:57

回答

3

替换方法只会将第一个参数的字符串作为第一个参数。你必须使用正则表达式替换所有出现:

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

(由于斜线字符用来分隔正则表达式文本,你需要躲避excpression内的斜线与反斜线)

不过,你为什么不只是分裂'/'字符呢?

5

使用的模式,而不是一个字符串,您可以使用“全局”修改

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

这里是我们的代码shud是什么样子替换找到的值:

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

njoi”