2015-09-04 85 views
-2

我正在開發一個Web瀏覽器。有沒有內置的方式來轉換部分url字符串,如"example.com""www.example.com"等...到"http://www.example.com/"
將部分url字符串轉換爲完整的url字符串

+1

'gmail.com'既不是一個URL也不是一個URI。這是一個域。 –

+0

維基百科總是很好。 https://en.wikipedia.org/wiki/Uniform_resource_identifier#The_relationship_between_URIs.2C_URLs.2C_and_URNs –

+0

我想你沒有意識到我的問題。我編輯了我的帖子。 –

回答

-1

從我的理解你的問題,這是你假裝。

String url = "www.example.com" 

//Checks if the string does not start with http:// 
if (!url.startsWith("http://" && !url.endsWith("/") { 
    //Appends the http in the begginning of the String 
    url.insert(0, "http://"); 
} 
//Checks if the string does not end with/
if (!url.endsWith("/") { 
    //Appends the slash in the end of the url 
    url.append("/"); 
} 

請注意,我添加了URL字符串的驗證,因爲在某些情況下,我猜你沒有確定的url格式。

+2

這不涉及所有的情況......我敢肯定,有一種內置的方式來轉換所有情況下正確的網址 –

+0

不能忘記最後的「/」 - !url.endsWIth(「/ 「) – Sh4d0wsPlyr

+0

@ Sh4d0wsPlyr謝謝,我沒有注意到這一部分。更新了我的答案。 –

0

假設你正試圖上鍵入到Web瀏覽器的地址欄中一個String操作,那麼你可以有信心做的唯一一件事就是檢查是否該字符串已經以「http://」或「https://」或其他某種方案(如「ftp://」)開頭,如果不是,則在開頭加上「http://」。

正如在評論中提到的那樣,假設子域應該設置爲「www」是錯誤的,因爲並不是所有的web服務器都配置了這個子域。 (而且很容易對Web服務器進行配置,以重定向到如果網站所有者喜歡「www」的子域的請求。)

所以我說你需要的代碼很簡單:

// Create a static final class field. 
static final Pattern STARTS_WITH_SCHEME = Pattern.compile("^ *[a-z]+://"); 

// Then within your method code make use of the Pattern. 
if (!STARTS_WITH_SCHEME.matcher(urlString).find()) { 
    urlString = "http://" + urlString.trim(); 
} 

這將檢查您的urlString是否以冒號和雙斜線開頭。如果不是,那麼「http://」將被預置爲urlString。請注意,Pattern允許空格出現在urlString的最開始處,然後方法代碼將其修剪掉。