在最后一次出现角色之前删除所有内容

Rol*_*and 63 javascript

我正在尝试对字符串执行以下操作:

  • 找到角色的最后一次出现"/";
  • 删除那个角色之前的一切;
  • 返回字符串的遗骸;

更明确一点,假设我有以下字符串:

var string = "/Roland/index.php"; // Which is a result of window.location.pathname
Run Code Online (Sandbox Code Playgroud)

现在我需要提取的是除了实际页面之外的所有内容,如下所示:

var result = "index.php" // Which is what I need to be returned
Run Code Online (Sandbox Code Playgroud)

当然,这只是一个例子,因为显然我会有不同的页面,但同样的原则适用.

我想知道是否有人可以帮我解决问题.我尝试了下一步行动但没有成功:

var location = window.location.pathname;
var result = location.substring(location.lastIndexOf["/"]);
Run Code Online (Sandbox Code Playgroud)

Gen*_* S. 98

您有正确的想法只需用括号替换括号.

var string = "/Roland/index.php";
var result = string.substring(string.lastIndexOf("/") + 1);
Run Code Online (Sandbox Code Playgroud)

这是jsfiddle中的一个示例,这里是对Mozilla Developer Network上的.lastIndexOf()方法的解释.

  • 那会在最后一次出现之后删除所有*.OP希望在*之前删除所有内容*.它应该是`location.substring(location.lastIndexOf("/")+ 1)`. (7认同)

Poi*_*nty 10

就个人而言,我会使用正则表达式:

var result = string.replace(/^.*\/(.*)$/, "$1");
Run Code Online (Sandbox Code Playgroud)

如果你熟悉正则表达式(如果不是你应该如此:-)那么它并不像他们不熟悉那样外星人.

前导^强制此正则表达式在字符串的开头"锚定"匹配.的\/比赛的单个/字符(\是保持/从混淆正则表达式分析器).然后(.*)$匹配从/字符串到结尾的所有其他内容.初始.*将尽可能多地吞噬,包括/最后一个之前的字符.替换文本"$1"是一种特殊形式,表示"第一个匹配组的内容".这个正则表达式有一个组,由最后一个.*(in (.*)$)的括号组成.这将是最后一次之后的所有内容/,所以整体结果是整个字符串被这些东西取代.(如果模式不匹配,因为没有任何/字符,则不会发生任何事情.)


Mic*_*ski 8

拆分串入上的阵列/.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());
Run Code Online (Sandbox Code Playgroud)

如果在URL的情况下,/path/stuff/here/如果您有尾随/,如果该情况应该返回一个空字符串而不是here,修改上面的内容以.replace()从调用链中删除.我假设你想要最后一个组件而不管尾部斜杠,但可能错误地假设了.

console.log(locationstring.split('/').pop());
Run Code Online (Sandbox Code Playgroud)