2012-02-13 81 views
1

基本上我想能夠抓住一個url的結尾,並將其轉換爲一個字符串用於某個地方。如何將domain.com/foo/bar/baz/轉換爲像'foo bar baz'這樣的字符串?

目前我正在做的(這是不是最佳):

// grab the path, replace all the forward slashes with spaces 
local_path = location.pathname.toString().replace(/\//g,' '); 

// strip empty spaces from beginning/end of string 
local_path.replace(/^\s+|\s+$/g,"")); 

但我認爲有可能是一個更好的辦法。幫幫我?

編輯:我可以放心地擺脫那裏的.toString方法嗎?

+0

您的解決方案似乎罰款:)。在現代瀏覽器中,您可以使用local_path.trim()而不是第二個 – mfeineis 2012-02-13 16:20:21

+1

什麼是您的方法的非最優?看起來對我來說很好。如果你想在一次調用中完成所有操作,那麼將最後的'.replace()'調用到第一個'.replace()'調用'.replace(/ \ // g,'').replace/^ \ S + | \ s + $ /克, 「」))'。 – 2012-02-13 16:20:51

+0

它的作品是啊。我實際上只是從很多東西中完善它,更糟糕的是(一個jQuery每個函數......一些令人討厭的其他東西)。只是想知道是否有更有效/更短的東西存在。 – xckpd7 2012-02-13 16:24:16

回答

3

,如果你想避免正則表達式你可以做這樣的事情:

location.pathname.substring(1).split('/').join(' ') 

這將擺脫最初的斜線,但不會採取尾隨斜線的照顧。如果您需要處理這些,你可以省略substring和使用trim現代實現或正則表達式:

location.pathname.split('/').join(' ').replace(/^\s+|\s+$/g, '') 
+0

正確的問題是,如果有一個結束斜線(可能會有,可能不會?對後端/ url重寫不夠了解),將存儲在字符串末尾的額外空間變量。在一天結束時,任何更快/更簡單,但現在我的解決方案將是首選,因爲無論如何,它將剝離空間。 – xckpd7 2012-02-13 16:39:06

+0

更新爲最終佔用空間,但我不確定它比你的方式更快。我們可以建立一個jsPerf並找出...大聲笑好吧,我剛剛意識到你寫了完全相同的正則表達式在你的問題,所以也許這沒有什麼幫助 – 2012-02-13 16:40:08

+0

除了toString方法...我需要嗎? – xckpd7 2012-02-13 16:42:44

1

你有什麼問題?對我來說看起來很好。這是處理你想要做的最簡單的方法。

相關問題