2013-05-21 14 views
14

ho bisogno di rimuovere tutti i tipi di "inizi web" dal mio StringRimuovere Prefisso URL da String (http: /, www, ecc)

mio TextView deve essere senza "http: //", "http : // www. " , "www." e altri prefissi URL.

Per favore, puoi aiutarmi a questo?

+1

non so no Android, ma non c'è qualcosa di simile a una funzione di sostituzione per stringa? Quindi potresti semplicemente sostituire quelle stringhe con una stringa vuota e il gioco è fatto ... –

+2

L'uso di "inizi web" mi dice che potresti aver bisogno di imparare alcuni concetti fondamentali dello schema URI prima di intraprendere questo progetto. – Jules

risposta

21

È possibile farlo usando un'espressione regolare

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

Uh, questa non è una buona idea, l'URL potrebbe contenere "www." altrove. Ad esempio, '" http://mywww.com "'. – matiash

+1

@matiash hai ragione. Ho risolto la mia risposta. Grazie. – kingori

+2

L'ordinamento della disgiunzione regex conta qui - dovrebbe essere 'replaceFirst ("^(http: // www \\. | Http: // | www \\.) "," ")' Per lavorare per 'http : // caso – Josh

6

è possibile utilizzare String sostituire.

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

Lo stesso commento della risposta accettata, '" www. "' Potrebbe essere presente da qualche altra parte nell'URL, dovresti solo rimuoverlo dall'inizio. – matiash

3

Presumo che quando si dice "inizio web", si intende "protocolli". Puoi ottenere ulteriori informazioni sugli URL in RFC o wikipedia.

In generale, non è possibile rimuovere "www." da un URL e garantisce che l'URL punterà allo stesso host. Se tutto quello che vuoi è nasconderlo all'utente, va bene, ma personalmente lo trovo fastidioso.

Il seguente codice eliminerà tutti i protocolli di cui Java conosce e non solo http. Non tutti i protocolli hanno un //, quindi è necessario verificarlo manualmente. Lo Java URL class può suddividere l'URL esattamente come lo desideri.

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

Utilizzare un'istanza di URI e usarlo per dividere tuttavia si desidera:

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

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

+10

Questa dovrebbe essere la risposta accettata. – matiash

+2

Sembra che il codice utilizzi 'java.net.URI' ma si collega a' android.net.Uri' senza commenti. È un po 'strano – Lii

+0

Il modo corretto sarebbe: Uri uri = Uri.parse ("http: //www.example.com "); –

Problemi correlati