从网址中删除最后一个元素

26

我需要从一个 span 中删除 URL 的最后一部分..

我有以下代码:

<span st_url="http://localhost:8888/careers/php-web-developer-2"
st_title="PHP Web Developer 2" class="st_facebook_large" displaytext="facebook"
st_processed="yes"></span></span>

我需要获取 st_url 并从中删除 php-web-developer-2,使其变为 http://localhost:8888/careers/

但我不确定如何做到这一点。 php-web-developer-2 不总是这样,但它将不会包含任何 /。它将始终是一个由 "-" 分隔的字符串。

有什么帮助吗??

7个回答

20

就像这样简单:

var to = url.lastIndexOf('/');
to = to == -1 ? url.length : to + 1;
url = url.substring(0, to);

1
它的工作效果更好,因为如果您有一些单词与路径匹配,替换将起作用并删除第一个匹配。 - Nath Paiva
不适用于WordPress,其中URL带有尾部斜杠。 - Sean Doherty

16

这里有一个稍微简单一点的方法:

url = url.slice(0, url.lastIndexOf('/'));

这是一个巧妙的解决方案;但是你如何修改这段代码以允许删除不止一个元素,而不仅仅是最后一个? - LionHeart-Nerd
我没有尝试过,但你应该能够将这行代码应用于想要从URL末尾删除的每个元素。或者将其放入一个带有计数器的循环中。希望对你有所帮助。 - Derk
对于不知道它会出现什么样子的人(因此我的最初问题),你的回答并不特别有帮助,更让人沮丧!您能否发布一些您建议的代码示例?根据您的评论,您的意思是:url = url.slice(0, url.lastIndexOf('/').slice(0, url.lastIndexOf('/'));? - LionHeart-Nerd

12
$('span').attr('st_url', function(i, url) {
    var str = url.substr(url.lastIndexOf('/') + 1) + '$';
    return url.replace( new RegExp(str), '' );
});

演示


1
请注意,此解决方案并非通用。如果您的URL的最后一部分也出现在其他位置,那么将会得到错误的结果;例如,“http://somewhere.com/test/e”将失败。Gisway的答案似乎更好。 - dotNET
这个解决方案有一个非常大的bug,因为如果url是"http://localhost:8888/careers1/careers",结果将会是"http://localhost:8888/1/careers",第一个"careers"被删除了。 - jscripter
你的演示需要改进,因为它没有展示出一个解决方案。 - mikoop

12
使用这个。
$('span').attr('st_url', function(i, url) {
    var to = url.lastIndexOf('/') +1;

    x =  url.substring(0,to);
    alert(x);
})​
您可以查看演示

4
如果您想要消除尾部斜杠,请去掉+1 - Chris Marisic

4
你可以使用正则表达式来解析“URL的最后一部分”:
var url="http://localhost:8888/careers/php-web-developer";

var baseurl=url.replace(new RegExp("(.*/)[^/]+$"),"$1");

RegExp基本上是说:“匹配任何东西,然后是一个斜杠,然后是一直到字符串结尾的所有非斜杠内容。”

replace函数使用该匹配部分,并用字符串的“任何东西,然后是斜杠”部分进行替换。

RegexBuddy提供了关于所有这些内容的大量信息。


1
点赞。在我看来,匹配“字符串结尾”的最佳方法。但是,就记录而言,我仍然默认情况下不喜欢正则表达式解决方案。 - FlipMcF

2
您可以在这里查看它的工作原理:http://jsfiddle.net/xKxLR/
var url = "http://localhost:8888/careers/php-web-developer-2";
var regex = new RegExp('/[^/]*$');
console.log(url.replace(regex, '/'));


0

首先,您需要解析标签。接下来尝试提取st_url值,这是您的URL。然后从提取的URL的最后一个字符开始使用循环,并省略它们,直到看到“/”为止。这就是您应该提取所需内容的方法。请记住这一点并尝试编写代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接