2013-05-21 17 views
14

muszę usunąć wszystkie rodzaje "internetowych" z początków mojego StringUsuń URL prefiks z String (http:/www, etc.)

Moja TextView musi być bez "http: //", „http : // www. " "www." i inne prefiksy adresów URL.

Czy możesz mi w tym pomóc?

+1

Nie wiem, nie Android, ale nie istnieje coś takiego jak funkcja zastąpić na ciąg? Wtedy możesz po prostu zamienić te łańcuchy na pusty łańcuch i to jest to ... –

+2

Twoje użycie "początków sieci" mówi mi, że zanim przystąpisz do tego projektu, będziesz musiał nauczyć się podstawowych schematów URI. – Jules

Odpowiedz

21

Można to zrobić za pomocą wyrażenia regularnego

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

To nie jest dobry pomysł, adres URL może zawierać "www". gdzieś indziej. Na przykład '" http://mywww.com "'. – matiash

+1

@matiash masz rację. Poprawiłem moją odpowiedź. dzięki. – kingori

+2

Kolejność rozróżniania regex ma znaczenie tutaj - powinna to być 'replaceFirst ("^(http: // www \\. | Http: // | www \\.) "," ")' Do pracy dla 'http : // www. case. – Josh

6

można użyć String zastąpić.

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

Taki sam komentarz, jak w przypadku zaakceptowanej odpowiedzi, '" www. "' Może być obecny gdzieś w adresie URL, powinieneś usunąć go tylko od początku. – matiash

3

Zakładam, że kiedy mówisz "początki sieci", masz na myśli "protokoły". Możesz dowiedzieć się więcej o adresach URL w RFC lub wikipedia.

Ogólnie mówiąc, nie można usunąć "www." z adresu URL i zagwarantować, że adres URL wskaże ten sam host. Jeśli wszystko, co chcesz zrobić, to ukryć przed użytkownikiem, to w porządku, ale osobiście uważam, że to denerwujące.

Poniższy kod usunie wszystkie protokoły, o których wie Jawa, a nie tylko http. Nie wszystkie protokoły mają //, więc musisz to sprawdzić ręcznie. Java URL class może rozkładać adres URL dokładnie tak, jak chcesz.

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

Użyj wystąpienie URI i użyć go do dzielenia jednak chcesz:

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

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

+10

To powinna być zaakceptowana odpowiedź. – matiash

+2

Kod wydaje się używać 'java.net.URI', ale łączysz się z' android.net.Uri' bez żadnych komentarzy. To trochę dziwne. – Lii

+0

Prawidłowy sposób to: Uri uri = Uri.parse ("http: //www.example.com "); –