删除最后一个正斜杠及其前面的文本

时间:2018-08-29 09:55:20

标签: javascript

我有一个看起来像这样的URL:

https://www.website.com/dk/da/home/category/

我正在尝试删除最后一个正斜杠及其前面的文本,直到到达新的正斜杠为止。这意味着我希望新的URL看起来像这样:

https://www.website.com/dk/da/home/

我正在尝试使用子字符串来实现此目的,但是我遇到了问题,因为在URL的末尾总是有一个正斜杠。

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

4 个答案:

答案 0 :(得分:4)

使用正则表达式

let url = "https://www.website.com/dk/da/home/category/"
url = url.replace(/\w+\/$/, "")
console.log(url)

给定示例的说明:https://regex101.com/r/3Nw7sL/2

更新:正如@CertainPerformance在此答案的注释中所指出的那样,搜索URL的最后一部分(\ w + /)并将其替换为空字符串甚至更加容易。

答案 1 :(得分:2)

string.lastIndexOf可以使用第二个参数来指示必须从哪个索引进行搜索(从结尾开始)

因此您可以执行此操作以获取不是字符串最后一个字符的最后一个字符:

let url = "https://www.website.com/dk/da/home/category/"

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

console.log(newUrl)

答案 2 :(得分:0)

其他方式:

str='https://www.website.com/dk/da/home/category/';

arr = str.split('/');

arr.pop();
arr.pop();

str = arr.join('/');

str = str + '/';

答案 3 :(得分:0)

两次执行相同的逻辑如何:

public static void main(String[] args)
    {
        String url = "https://www.website.com/dk/da/home/category/";
        int to = url.lastIndexOf('/');
        to = to == -1 ? url.length() : to;
        String newUrl = url.substring(0, to);
        to = newUrl.lastIndexOf('/');
        to = to == -1 ? newUrl.length() : to;
        newUrl = url.substring(0, to);
        System.out.println(newUrl);
    }

PS-不要两次写逻辑,而要使用方法。