2013-02-19 29 views
0

從字符串中提取域名的最佳方式是什麼?從字符串中提取域

例如,因爲沒有協議,所以不能使用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 2013-02-19 06:54:31

+1

@MarounMaroun,OP似乎在說,既然字符串沒有協議(如http/https),該消息的URL構造失敗。但是由於他只是想提取URL的主機名和其他組件,他可以簡單地附加一些協議並利用URL的apis,對吧? – Vikdor 2013-02-19 06:56:07

+0

我認爲你是對的,我誤解了他。 – Maroun 2013-02-19 06:58:40

3

假設永遠不會有一個http://添加額外的斜線,你可以這樣做:

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

這會給你一個子到第一個斜槓。

編輯: 正如指出的,如果沒有斜線,這將失敗。你可以解決這個問題是這樣的:

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

,但其實你最好使用Quoi的解決方案,如果有可能在你的輸入沒有斜槓。

+0

如果字符串是(例如):* stackoverflow.com *(沒有'/'),這將失敗 – Maroun 2013-02-19 07:03:55

+0

@MarounMaroun好點。編輯.. – 2013-02-19 07:12:15

1

可以使用String#split與至REGx - 「/

String[] split = str.split("/"); 
System.out.println(split[0]);