2013-05-21 57 views
14

我需要從我的字符串從字符串中刪除URL前綴(HTTP:/,WWW等)

我的TextView必須是不去除各種 「網絡開始」 的 「http://」,「HTTP :// www。「 ,「www。」和其他URL前綴。

請你能幫我解決這個問題嗎?

+1

我不知道有沒有機器人,但並不存在像一個替換功能爲字符串?然後,您可以簡單地用空字符串替換這些字符串,就是這樣... –

+2

您對「網絡開始」的使用告訴我,在開始這個項目之前,您可能需要學習一些URI方案的基礎知識。 – Jules

回答

21

你可以通過使用正則表達式

"www.aaa".replaceFirst("^(http[s]?://www\\.|http[s]?://|www\\.)","") 
+6

呃,這不是一個好主意,網址可能包含「www」。別的地方。例如,'「http://mywww.com」'。 – matiash

+1

@matiash你是對的。我已經解決了我的答案。謝謝。 – kingori

+2

正則表達式析取的順序在這裏 - 它應該是'replaceFirst(「^(http:// www \\。| http:// www \\。)」,「」)'爲'http :// www.case。 – Josh

6

可以使用替換字符串。

String myString = "http://www.abc.com"; 
myString.replace("http://","").replace("http:// www.","").replace("www.",""); 
+3

與接受的答案相同的評論,'「www。」'可能存在於URL的其他地方,您應該只從一開始就將其刪除。 – matiash

3

我認爲當你說「web開始」時,你的意思是「協議」。您可以在RFCwikipedia中瞭解有關URL的更多信息。

一般來說,您不能刪除「www」。從一個URL,並保證該URL將指向相同的主機。如果你想要做的就是把它從用戶身上隱藏起來,那很好,但我個人覺得很煩人。

以下代碼將刪除Java知道的所有協議,而不僅僅是http。並非所有協議都有//,因此您必須手動檢查該協議。 Java URL class可以按照您的要求精確分解URL。

import java.net.URL; 

public class test 
{ 
    public static void main(String[] args) 
    { 
     try { 
      URL url = new URL(args[0]); 
      String protocol = url.getProtocol(); 
      String result = args[0].replaceFirst(protocol + ":", ""); 
      if (result.startsWith("//")) 
      { 
       result = result.substring(2); 
      } 

      System.out.println(result); 
     } catch (Exception e) { 
      System.out.println(e); 
     } 
    } 
} 
42

使用的URI一個實例,並用它不過分裂你想:

URI uri = new URI(whateverYourAddressStringIs); 
String path = uri.getPath(); // split whatever you need 

http://developer.android.com/reference/android/net/Uri.html

+10

這應該是被接受的答案。 – matiash

+2

該代碼似乎使用'java.net.URI',但您沒有任何評論就鏈接到'android.net.Uri'。這有點奇怪。 – Lii

+0

正確的方法是:Uri uri = Uri.parse(「http://www.example。com「); –