我正在尝试对字符串执行以下操作:
"/"
; 为了更明确,假设我有以下字符串:
var string = "/Roland/index.php"; // Which is a result of window.location.pathname
现在我需要提取的是除了实际页面之外的所有内容,如下所示:
var result = "index.php" // Which is what I need to be returned
当然,这只是一个例子,因为很明显我会有不同的页面,但适用相同的原则。
我想知道是否有人可以帮我解决问题。我尝试了下一步行动但没有成功:
var location = window.location.pathname;
var result = location.substring(location.lastIndexOf["/"]);
答案 0 :(得分:91)
您有正确的想法,只需用括号替换括号。
var string = "/Roland/index.php";
var result = string.substring(string.lastIndexOf("/") + 1);
以下是jsfiddle中的示例,以下是Mozilla Developer Network上.lastIndexOf()方法的说明。
答案 1 :(得分:10)
就个人而言,我会使用正则表达式:
var result = string.replace(/^.*\/(.*)$/, "$1");
如果你熟悉正则表达式(如果不是,那么你应该是这样的:-)那么它就不像他们不熟悉那样外星人了。
前导^
强制此正则表达式在字符串的开头“锚定”匹配。 \/
匹配单个/
字符(\
是为了防止/
混淆正则表达式解析器)。然后(.*)$
匹配从/
到字符串末尾的所有其他内容。最初的.*
会尽可能多地吞噬,包括前一个/
个字符。替换文本"$1"
是一种特殊形式,表示“第一个匹配组的内容”。此正则表达式有一个组,由最后.*
((.*)$
)周围的括号组成。这将是最后一个/
之后的所有内容,因此整体结果是整个字符串被这些东西取代。 (如果模式不匹配,因为没有任何/
个字符,则不会发生任何事情。)
答案 2 :(得分:7)
将字符串拆分为/
上的数组和最后一个元素的.pop()
。请注意,如果有斜杠,首先需要去除尾部斜杠。
var locationstring = window.location.pathname;
// replace() the trailing / with nothing, split on the remaining /, and pop off the last one
console.log(locationstring.replace(/\/$/, "").split('/').pop());
如果在/path/stuff/here/
这样的网址中你有/
,那么如果这种情况应该返回一个空字符串而不是here
,请修改上面的内容以删除{来自调用链的{1}}。我假设你想要最后一个组件而不管尾随斜杠,但可能错误地假设了。
.replace()
答案 3 :(得分:2)
var result = /\/([^\/]*)$/.exec(location)[1];
//"remove-everything-before-the-last-occurrence-of-a-character#10767835"
注意:location
此处为window.location
,而非var location
。
答案 4 :(得分:0)
var string = "/Roland/index.php";
var result = string.substring(0, string.lastIndexOf("/") + 0);