2009-08-14 50 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」