我正在尝试对字符串执行以下操作:
- 查找字符
"/"
的最后一次出现; - 删除该字符之前的所有内容;
- 返回字符串的剩余部分;
更明确地说,假设我有以下字符串:
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["/"]);
6条答案
按热度按时间elcex8rz1#
你的想法是对的,只要把括号换成圆括号就行了。
这是jsfiddle中的一个示例,并解释了Mozilla Developer Network上的.lastIndexOf()方法。
3z6pesqy2#
就我个人而言,我会使用正则表达式:
如果您熟悉正则表达式(如果不熟悉:-,您应该熟悉),那么它就不会像不熟悉时那样陌生。
前导
^
强制此正则表达式将匹配“锚”在字符串的开头。\/
匹配单个/
字符(\
是为了防止/
混淆正则表达式解析器)。然后(.*)$
匹配从/
到字符串末尾的所有内容。初始的.*
将尽可能多地吸收,包括最后一个字符之前的/
个字符。替换文本"$1"
是一种特殊形式,表示“第一个匹配组的内容”。此正则表达式有一个组,由最后一个.*
前后的括号形成(在(.*)$
中)。这将是最后一个/
之后的所有内容,因此,总的结果是整个字符串被替换为这些内容(如果由于没有/
字符而导致模式不匹配,则什么也不会发生)。7xzttuei3#
将字符串拆分为
/
上的数组和.pop()
上的最后一个元素。注意,如果有斜杠,首先需要去掉尾部的斜杠。如果在
/path/stuff/here/
这样的URL中,您有尾随的/
,如果这种情况应该返回一个空字符串而不是here
,修改上面的代码以从调用链中删除.replace()
。我假设您想要最后一个组件,而不考虑尾随的斜杠,但可能假设错误。11dmarpk4#
注意:这里是
window.location
,不是您的var location
。of1yzvn45#
为了知道哪一个最快,我创建了一个小的基准测试。regex是最慢的解决方案,使用
substring
或slice
与lastIndexOf
严格地比split
与pop
或at
快。因此用途:
完整结果:
Try it online!
rseugnpd6#