Правильный способ захвата части «хоста» полного доменного имени

#javascript #node.js #string

Вопрос:

У меня есть hostName строка, которая может быть или не быть полным доменным именем.

 hostName = host1.abc.com  OR

hostName = host1
 

В случае hostName , если это полное доменное имя, мне нужно захватить только первую часть в host

 host = host1
 

Я написал следующее, но это дает пустую строку "" , если hostName это не полное доменное имя

 const host = hostName.substring(0, hostName.indexOf('.'));
 

Ответ №1:

Таким образом, он будет правильно указывать имя хоста в любом из 2 сценариев

const host = hostName.split('.')[0];

Или же

const idx = hostName.indexOf('.');

const host = idx > 0 ? hostName.substring(0, idx) : hostName;

Комментарии:

1. Какой смысл проверять, если разделенный массив больше 1? Это все равно должно сработать, если вы просто сделаете const host = hostName.split('.')[0]

2. Да, это правда. И спасибо, что упомянули об этом! Я только что это заметил. Тогда ответ будет const host = hostName.split('.')[0]; таким, и позвольте мне отредактировать мой исходный ответ для ясности 🙂 (Только для другого способа нам нужно будет проверить, больше ли idx 0)