如何仅从网址中获取域的名称
+--------------------------------------------+------------+
| 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
有人可以重写代码并粘贴到这里吗?
答案 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;
}