2012-12-21 87 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