如何从URL中获取域名-Angular 7

时间:2019-03-17 21:22:46

标签: angular split

如何仅从网址中获取域的名称

+--------------------------------------------+------------+
| input                                      | output     |
+--------------------------------------------+------------+
| http://google.com/abc.html                 | google     |
| http://www.yahoo.com?abc                   | yahoo      |
| https://youtube.co.in/abc/xyz.html         | youtube    |
| https://www.twitter.au.uk/abc&xyz.php      | twitter    |
+--------------------------------------------+------------+

此“输出”将用于创建图像“ google.png”的名称

在我的角度应用程序中,我将代码分为3部分:

第1部分

export function extractHostname(url: string): string {
    let hostname;

    // remove protocol
    if (url.indexOf('//') > -1) {
        hostname = url.split('/')[2];
    } else {
        hostname = url.split('/')[0];
    }

    // remove port
    hostname = hostname.split(':')[0];

    // remove query
    hostname = hostname.split('?')[0];

    return hostname;
}

第2部分(这是我的问题)

import { extractHostname } from './extractHostname';

export function extractRootDomain(url: string): string {
    let domain = extractHostname(url);
    const splitArr = domain.split('.');
    const arrLen = splitArr.length;

    // get root domain
    if (arrLen > 2) {
        domain = splitArr[arrLen - 2] + '.' + splitArr[arrLen - 1];
        // see if it's using a Country Code Top Level Domain (ccTLD) (i.e. ".me.uk")
        if (splitArr[arrLen - 2].length === 2 && splitArr[arrLen - 1].length === 2) {
            domain = splitArr[arrLen - 3] + '.' + domain;
        }
    }

    return domain;
}

第3部分-最后一步(返回+ domain +以创建图像名称)

import {extractRootDomain} from './extractRootDomain';

export function getFaviconFromUrl(url: string) {
    const domain = extractRootDomain(url);
    return 'https://mywebsite.com/img/'+domain+'.png;
}

实际上是这项工作,但是返回的是google.com -和-我只需要Google

有人可以重写代码并粘贴到这里吗?

1 个答案:

答案 0 :(得分:0)

嗯...问题出在第一部分。 这是正确的代码(将www和。分开)

export function extractHostname(url: string): string {
    let hostname;

    // remove protocol
    if (url.indexOf('//') > -1) {
        hostname = url.split('/')[2];
    } else {
        hostname = url.split('/')[0];
    }

    if (url.indexOf('www.') > -0) {
        hostname = url.split('www.')[1];
    }

    hostname = hostname.split('.')[0];

    // remove port
    hostname = hostname.split(':')[0];

    // remove query
    hostname = hostname.split('?')[0];

    return hostname;
}