substring

Xerxess81

Grünschnabel
Hallo,
ich mag gerade die Lösung nicht sehen...
ich habe einen String einer Internetadresse, der da lautet zB:

String ein = "http://www.beispiel.net/hopplahopp.html"

Wie muss ich die Subtringabfrage gestalten, damit ich den substring von 0 bis zum dritten Slash (nach dem net) bekomme.


mit ein.substring(0, ein.indexOf("/")) komme ich ja nur bis zum ersten /, diese sollen aber ja ignoriert werden.

Danke für eure Hilfe
 

Matze

Weltenwanderer
Mit indexOf("\") kannst du die Positon des ersten Shlases rausfinden, dann mit indexOf("\", index vom ersten Shlash), usw bis zum dritten.
geht vieleicht auch verschachtelt indexOf("\", indexOf("\", indexOf("\"))).

Gibt bestimmt aber auch schon besser Möglichkeiten, da ich hier nur Java 1.3 hab. Einfach mal in der API gucken.
 

Tomek_FFM

Mitglied
Hallo,
in Deinem speziellen Fall würde ich das mit der lastIndexOf-Methode machen:

Java:
String ein = "http://www.beispiel.net/hopplahopp.html";
String sub = ein.substring(0, ein.lastIndexOf("/"));
System.out.println(sub);

Ausgabe:
Code:
http://www.beispiel.net
 
Zuletzt bearbeitet:

Jens K

Mitglied
Für die Lösung dieses Problems gibt es mehrere Möglichkeiten. Zum einen kannst du alle Zeichen lesen lasssen und beim 3. Slash den String von einander trennen:

Code:
public class Main {

    public static void main(String[] args) {
      String ein = "http://www.beispiel.net/hopplahopp.html";
      char c;
      int zaehler = 0;
      int gefunden = 0;
      for (int i=0; i < ein.length(); i++) {
          c = ein.charAt(i);
          if (c == '/') {
              zaehler++;
              if (zaehler == 3) gefunden = i; 
          }
      }
      String aus = ein.substring(gefunden, ein.length());
      System.out.println(aus);
    }

}

oder du splittest den String zu einem Array, nämlich immer da, wo ein slash vorkommt und benutzt dann immer nur den letzten String im Array:

Code:
public class Main2 {

    public static void main (String args[]){
        String ein = "http://www.beispiel.net/hopplahopp.html";
        String[] trim = ein.split("/");
        String aus = trim[trim.length-1];
        System.out.println(aus);
    }
}
 

Tomek_FFM

Mitglied
Habe mal Matze's Idee aufgegriffen und noch einen Lösungsvorschlag gebastelt ;-)

Java:
sub = ein.substring(0, ein.indexOf("/", ein.indexOf("//") + 2));
 

takidoso

Erfahrenes Mitglied
wenn ich das richtig verstehe möchtest Du den letzten Teil haben, unabhängig ob es der 1. oder 2. oder dritte slash ist.
ich würde vielleicht mit File und getName() arbeiten.