如何使用JavaScript匹配URL中的字符串并从匹配的字符串索引中拆分URL?

时间:2019-05-20 20:39:48

标签: javascript

我有一个 URL ,例如:/path/id/anotherpath/0

从上面的 URL 中,我必须检查anotherpath是否存在,并从/anotherpath中拆分 URL 的一部分,所以我想仅从 URL 获得/anotherpath/0

我尝试使用:

const path = this.props.location.pathname;

if (path.indexOf(anotherpath > 0) {
    path = path.split('anotherpath');
}

但是上面的代码给了我一个分开的 URL ,例如/path/id/0。我怎样才能解决这个问题?我想将 URL anotherpath转到 URL 的最后一部分。

4 个答案:

答案 0 :(得分:0)

您可以尝试使用正则表达式。

Preparator.__init__(self,targets,default_targets=['armv7','arm64','x86','x86_64'], virtual_targets=android_virtual_targets)

答案 1 :(得分:0)

好吧,一种解决方案是使用indexOf("anotherpath")中的Array.slice()

const path = "/path/id/anotherpath/0";
const idx = path.indexOf("anotherpath");

if (idx > 0)
    console.log(path.slice(idx - 1));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

另一种替代方法是使用String.match()

const path = "/path/id/anotherpath/0";
let res = path.match(/\/anotherpath.*/);
console.log(res ? res[0] : "not found");
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

答案 2 :(得分:0)

如果我正确理解了这个问题,则path.substring(path.indexOf(“ / anotherpath”))会为您提供所需的字符串部分

在重新分配路径时,还需要声明路径为let

答案 3 :(得分:0)

您可以使用类似于以下的功能。此函数接收路径作为参数,如果您要查找的标记存在,它将被剪切并仅返回您感兴趣的部分,否则将返回完整路径

function getSubpath(path) {
    if (!path.includes('anotherpath')) return path;

    const tokens = path.split('/');
    const index = tokens.findIndex(token => token === 'anotherpath');

    tokens.splice(0, index);

    return `/${tokens.join('/')}`;
}

请尝试以下实现

// having these variables
const path0 = '/path/id/0';
const path1 = '/path/id/anotherpath/0';

function getSubpath(path) {
    if (!path.includes('anotherpath')) return path;

    const tokens = path.split('/');
    const index = tokens.findIndex(token => token === 'anotherpath');

    tokens.splice(0, index);

    return `/${tokens.join('/')}`;
}

console.log(getSubpath(path0));
console.log(getSubpath(path1));