再次加入分割后的字符串,跳过分割后形成的数组的一个索引

时间:2019-03-29 03:07:56

标签: javascript arrays string url

我正在使用此URL: demo.example.in/posts/0ewsd/13213

我需要从此URL获取主机名( demo.example.in ),后跟路径( posts / 0ewsd / 13213

urlHost = 'demo.example.in/posts/0ewsd/13213'; let urlHostName = urlHost.split("/");

我尝试使用 split()方法,但最终拆分了整个URL ... ['demo.example.in', 'posts', '0ewsd', '13213']

我需要得到的是 demo.example.in posts / 0ewsd / 13213 有什么办法吗?

5 个答案:

答案 0 :(得分:1)

如果需要,可以使用正则表达式-匹配并捕获/(主机名)以外的任何内容,然后匹配/,然后匹配并捕获行(路径)的其余部分。主机名将在第一个捕获的组中,路径将在第二个捕获的组中:

const input = 'demo.example.in/posts/0ewsd/13213';
const [, hostname, path] = input.match(/([^/]+)\/(.*)/);
console.log(hostname, path);

答案 1 :(得分:1)

一种可能的解决方案是使用捕获组将String.match()与下一个正则表达式/^([^/]*)\/(.*)$/结合使用:

const url = "demo.example.in/posts/0ewsd/13213";

const customSplit = (url) =>
{
    let matches = url.match(/^([^/]*)\/(.*)$/);
    return [matches[1], matches[2]];
}

let [hostname, path] = customSplit(url);

console.log("hostname => " + hostname);
console.log("path => " + path);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

或者,使用String.split()Destructuring Assignment,您可以下一步:

const url = "demo.example.in/posts/0ewsd/13213";

const customSplit = (url) =>
{
    let [hostname, ...path] = url.split("/");
    return [hostname, path.join("/")];
}

let [hostname, path] = customSplit(url);

console.log("hostname => " + hostname);
console.log("path => " + path);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

答案 2 :(得分:1)

var urlHost = 'demo.example.in/posts/0ewsd/13213';

const [host, param] = [urlHost.substring(0, urlHost.indexOf('/')), urlHost.substring(urlHost.indexOf('/') + 1)];

console.log(host, param);

希望这对您有帮助!

答案 3 :(得分:0)

使用正则表达式分组功能解决此问题。在regEx下面将字符串分为3组,首先是主机,然后是定界符(/),然后是路径。

var patt = /^([\w\.]*)(\/)(.*)$/gim;

Demo

答案 4 :(得分:0)

如果可以在方案的前缀前面加上URL,则可以使用URL API来获取主机和路径。

const url = new URL('http://' + 'demo.example.in/posts/0ewsd/13213');
const host = url.host, path = url.pathname.slice(1);

console.log('Host:', host);
console.log('URL Path:', path);