2012-06-23 162 views
0

我有以下的URL,我想找到一個字符串,並刪除該字符串和任何它之前的任何東西。JavaScript替換字符串和url之前的字符

字符串:me.do?page=

URL可以是

http://demo.com/me.do?page=/facebook/link/home.php 
http://demo.com/sub-folder/me.do?page=/facebook/link/home.php 
http://**subdomain**.demo.com/sub-folder/demo/me.do?page=/facebook/link/home.php 

最終輸出應該是

/facebook/link/home.php 
/facebook/link/home.php 
/facebook/link/home.php 

回答

2

並不真正需要的正則表達式即使是這種情況:

var url = "http://demo.com/me.do?page=/facebook/link/home.php"; 
var result = url.split("/me.do?page=")[1]; 
+1

請注意,如果由於某種原因存在另一個''/me.do?page=「',它將會失敗。分裂並獲得一切後,即使分裂的東西出現不止一次[這個問題將是有用的](http://stackoverflow.com/questions/11151542/javascript-split-to-split-string-in-2 -parts-number-of-spit-chara) – ajax333221

+0

我應該解釋一下這段代碼的一些注意事項。一個是'/me.do?page ='必須存在於字符串中,否則split將返回一個1個字符串的數組,您將從[1]中得到一個超出邊界錯誤的索引。其次,像@ ajax333221表示,如果有多於1個'/me.do?page =',它將(或應該)只抓取第一個和第二個實例之間的結果。這裏提供的其他答案在這些方面更加健壯,但是這是一個快速和骯髒的解決方案,可讀性更高 – Russ

1
var ur="http://demo.com/sub-folder/me.do?page=/facebook/link/home.php"; 
    var answer=ur.substring(ur.indexOf("me.do?page=")+11, ur.length); 
+1

如果有人想知道'+ 11'是從它的'me.do?page ='的長度來的。第二個'substring()'的第二個參數可以被忽略,以獲得'ur.length'所做的其他字符串。這比我的答案更強大,因爲它會找到'me.do?page ='的第一個實例,然後返回剩下的部分,但是我們有一個'幻數',取決於您搜索的字符串的長度。 – Russ

0

如果你真的覺得你需要記住了這個問題,正則表達式的答案,並承擔該字符串操作的速度更快/更便宜的,有:

var urls = ["http://demo.com/me.do?page=/facebook/link/home.php", 
        "http://demo.com/sub-folder/me.do?page=/facebook/link/home.php", 
        "http://**subdomain**.demo.com/sub-folder/demo/me.do?page=/facebook/link/home.php"], 
    newUrls = []; 

for (var i = 0, len = urls.length; i < len; i++) { 
    var url = urls[i]; 
    newUrls.push(url.replace(/.+\/me\.do\?page\=/, '')); 
} 

console.log(newUrls);​ 

JS Fiddle demo