2012-05-11 21 views
16

Chcę wyodrębnić nazwę bezwzględnej ścieżki. Jeśli mam ciąg znaków o wartości/mnt/sdcard/Videos/Videoname, chcę zapisać ciąg z wartością Videoname.Uzyskaj nazwę od ścieżki bezwzględnej, fragment z ostatniego ukośnika, java android

Łańcuch się zmienia i nie można uzyskać wcześniej liczby ukośników. Jak mogę podzielić podciąg z ostatniego ukośnika?

/mnt/sdcard/Video/Videoname -> Videnoname

+1

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

+0

Skorzystaj z tego linku, aby odpowiedzieć na pytanie podobne do twojego. https://stackoverflow.com/questions/4050087/how-to-obtain-the-last-path-segment-of-an-uri# –

Odpowiedz

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

Jeśli masz czy z "Plik" obiekt, można go pobrać z tej metody:

String fileName = myFile.getName(); 

Jeśli masz to z prostego ciągu znaków, można użyć

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

-1. Wersja łańcuchowa jest niepoprawna, '"/mnt/sdcard/Videos/Videoname "' zwróci '"/Videoname "'. Użyj sugerowanego przeze mnie interfejsu API "Plik", np. nowy plik ("/ mnt/sdcard/Videos/Videoname"). getName(), który zwróci poprawną '" Videoname "'. – dacwe

+1

Masz rację, zapomniałem dodać +1 do indeksu ... Ale na pewno wersja "Plik" jest fajniejsza;) –

+0

Teraz jest lepiej! – dacwe

21

Powinieneś przejść przez api File. Cytat z dokumentacji File.getName():

Powoduje zwrócenie nazwy pliku lub katalogu oznaczonych tą abstrakcyjną ścieżką. To jest tylko nazwisko w sekwencji nazwy ścieżki. Jeśli sekwencja nazw ścieżki jest pusta, zwracany jest pusty ciąg znaków.

Przykład:

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

Ale trochę więcej badań, następujący kod działa ...

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

Musisz uciec "\" dwukrotnie.

+0

Właściwie to pytanie dotyczyło ukośników "/" zamiast ukośników "\". – LarsH

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

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

Najprostszym sposobem jest

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

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

Teraz masz last.htm w ciąg ścieżki.

Powiązane problemy