2012-12-21 161 views
3

使用window.location.pathname我得到「/ Mobile/Evol/12-20-2011」。使用Javascript刪除URL的末尾

使用Javascript,我怎麼可以放棄「Evol /」之後的所有內容,以便獲得「/ Mobile/Evol /」?

+2

順便說一句,什麼是你真正的目標是什麼? –

+0

@MaratTanalin我第二。從你寫的內容來看,一般來說,你實際上正在嘗試完成的事情並不清楚。 – 2012-12-21 16:56:21

回答

6

可以使用的substring()lastIndexOf()功能的組合很容易切斷一切最後/後:

uri = "/Mobile/Evol/12-20-2011"; 
newUri = uri.substring(0, uri.lastIndexOf('/')); 

爲@josh指出,如果有「/ EVOL」後,更多的目錄,這將失敗。

dir = "Evol/"; 
newUri = uri.substring(0, uri.lastIndexOf(dir) + dir.length); 

Chrome的控制檯使我這個輸出:

> uri = "/Mobile/Evol/12-20-2011"; 
"/Mobile/Evol/12-20-2011" 

> dir = "Evol/"; 
    newUri = uri.substring(0, uri.lastIndexOf(dir) + dir.length); 
"/Mobile/Evol/" 
+1

這假定在'Evol'之後只有一個目錄,這可能不正確。 – josh3736

+0

@ josh3736這是正確的,我只是按照發布的示例。我編輯,以考慮您的評論。 –

0
var str = window.location.pathname; 
const sub = "Evol/"; 

var locEvol = str.indexOf(sub); 
var endIdx = locEvol + sub.length; 
var beginStr = str.substring(0, endIdx); 
// beginStr contains the desired substring 
+0

downvote的任何理由? – 2012-12-21 16:55:00

0

假設你願意,你可以通過搜索字符串「EVOL /」,然後把它的長度返回字符串末尾解決這個問題切斷任何查詢和片段完全:

url.replace(/\/Evol\/[^?#]*(?:[?#].*)?$/, '/Evol') 

爲了打破這個表達式下來:

  1. \/Evol\/與文字文本"/Evol/"相符。 \是必要的,因爲//Evol/...將成爲行註釋,並且在正則表達式的其他地方/結束正則表達式。
  2. [^?#]匹配任何東西,除了查詢或片段分隔符
  3. (?:...)?只是讓一些可選
  4. [?#].*查詢或片段相匹配開始後跟任意數量的非空白字符
  5. $的迫使比賽到達終點的輸入。
1

只需要使用JavaScript字符串 「拆分」 功能,

var url = '/Mobile/Evol/12-20-2011'; 
var tokens = url.split('/'); 
var reqURL = token[0] + '/'+ token[1] ; 

當然URL格式必須是相同的some_string/some_string/some_string