2012-05-11 12 views
16

Ich möchte den Namen eines absoluten Pfades extrahieren. Wenn ich eine Zeichenfolge mit dem Wert/mnt/sdcard/Videos/Videoname habe, möchte ich eine Zeichenfolge mit dem Wert Videoname speichern.Name vom absoluten Pfad, Teilzeichenfolge vom letzten Schrägstrich, Java-Android

Die Zeichenfolge ändert sich und ich kann nicht zuvor die Anzahl der Schrägstriche erhalten. Wie kann ich einen Teilstring vom letzten Schrägstrich trennen?

/mnt/sdcard/Videos/Videoname -> Videnoname

+1

String name = "/ mnt/sdcard/Videos/Videoname"; String newName = name.substring (name.lastIndexOf ("/") + 1, name.length()); –

+0

Folgen Sie diesem Link zu einer Antwort auf Ihre Frage. https://StackOverflow.com/questions/4050087/how-to-tain-the-last-path-Segment-of-an-uri# –

Antwort

0
string a = "/foo/bar/target"; 
string words = a.Split("/") 
string target = words[words.length-1] 
9

Wenn Sie bekam, wenn von einer "Datei" Objekt, können Sie es mit dem Verfahren erhalten können:

String fileName = myFile.getName(); 

Wenn Sie es aus einem einfachen String haben, können Sie verwenden

String fileName = myString.substring(myString.lastIndexOf("/")+1); 
+2

-1. Die String-Version ist falsch, '"/mnt/sdcard/Videos/Videoname "' würde '"/Videoname "' zurückgeben. Verwenden Sie die Datei-API wie ich vorgeschlagen habe, z. neue Datei ("/ mnt/sdcard/Videos/Videoname"). getName() die den richtigen '' Videoname '' zurückgeben würde. – dacwe

+1

Sie haben Recht, ich habe vergessen, +1 zum Index hinzuzufügen ... Aber sicher, die "Datei" Version ist waaaay netter;) –

+0

Nun, das ist besser! – dacwe

21

Sie sollten über die File API gehen. Zitiert aus der File.getName() Dokumentation:

Gibt den Namen der Datei oder des Verzeichnisses, die von diesem abstrakten Pfadname bezeichnet. Dies ist nur der letzte Name in der Namenssequenz des Pfadnamens. Wenn die Namenssequenz des Pfadnamens leer ist, wird die leere Zeichenfolge zurückgegeben.

Beispiel:

String name = new File("/mnt/sdcard/Videos/Videoname").getName(); 
1

Aber mit ein wenig mehr Forschung, der folgende Code funktioniert ...

String[] Tokens = stringPath.split("\\\\"); 

Sie müssen die "\" zweimal entkommen.

+0

Eigentlich ging es um Vorwärtsstriche '/' und nicht um Backslashes '\'. – LarsH

6
String path = "/mnt/sdcard/Videos/Videoname"; // Your path 

String fileName = new File(path).getName(); // you file name 
2

Der einfachste Weg ist

String path ="AnyDirectory/subFolder/last.htm"; 
int pos = path.lastIndexOf("/") + 1; 

path.substring(pos, path.length()-pos); 

Jetzt können Sie die last.htm in der Pfadzeichenfolge haben.

Verwandte Themen