2013-02-19 4 views
0

Каков наилучший способ извлечения имени домена из строки?Извлечь домен из строки

Например. xyz.com/path1/path2/path3/somefile.txt

Как нет протокола, не может использовать java.net.URL.

Только вариант, о котором я могу думать, это прочитать до первого косая черта.

Спасибо.

ответ

4

Вы можете просто прикрепить http:// к этой строке и построить объект URL и извлечь имя хоста, используя метод getHost().

String urlString = "xyz.com/path1/path2/path3/somefile.txt"; 
URL url = new URL("https://" + urlString); 
System.out.println(url.getHost()); 
+0

Он не может использовать 'URL' – Maroun

+1

@MarounMaroun, OP, кажется, говорит, что, поскольку строка не имеет протокол (например, HTTP/https), с этим сообщением заканчивается построение URL. Но так как он просто заинтересован в извлечении имени узла и других компонентов URL-адреса, он может просто добавить какой-то протокол и использовать apis-URL, верно? – Vikdor

+0

Я думаю, что ты прав, я его неправильно понял. – Maroun

3

Предполагая, что никогда не будет HTTP: //, чтобы добавить дополнительные слэши, вы можете сделать это:

String domain = urlString.substring(0, urlString.indexOf("/")); 

Это даст вам подстроку до первой косой черты.

Редактировать: Как указано, это не удастся, если нет косых черт. Вы можете исправить это так:

int index = urlString.indexOf("/"); 
if(index >= 0) String domain = urlString.substring(0, index); 

Но вы действительно лучше использовать решение Quoi, если не может быть не косой черты в вашем входе.

+0

Это не удастся, если 'String' (например): * stackoverflow.com * (без'/') – Maroun

+0

@MarounMaroun Хорошая точка. Ред .. –

1

вы можете использовать String#split с regx - «/»

String[] split = str.split("/"); 
System.out.println(split[0]); 
Смежные вопросы