2009-04-13 20 views

Odpowiedz

4

Nie można po prostu zrobić coś podstawowego jak:

string filename = filename.substring(filename.lastIndexOf("\\") + 1) 

Wiem, że to nie jest jedno wywołanie funkcji, ale powinno działać tak samo.

Edytowane w oparciu o komentarz @Bryan Grezeszak.

+0

Ciąg znaków fullpath jest pobierany dynamicznie po wybraniu pliku przez użytkownika i wygląda tak: "c: \ temp \ abc.doc" lastIndexOf ("\\") nie działa powyżej. –

+0

dlaczego nie? lastIndexOf ("\\") oznacza znalezienie ostatniego "\" i powiedz mi jego indeks w ciągu znaków. – meandmycode

+0

Jesteś na dobrej drodze, ale musisz dodać do indeksu, aby usunąć rzeczywisty ukośnik z finału wynik :) –

2

Najwyraźniej można użyć klasy File, a dokładniej, statycznego elementu File.separator, jeśli pracujesz ze środowiskiem AIR. Powinien zwrócić "/" lub "\", który możesz dołączyć do sugestii @ cmptrgeekken.

4

Pierwszy chcesz znaleźć ostatnie wystąpienie/lub \ w ścieżce, zrób to za pomocą tego:

var fSlash: int = fullPath.lastIndexOf("/"); 
var bSlash: int = fullPath.lastIndexOf("\\"); // reason for the double slash is just to escape the slash so it doesn't escape the quote!!! 
var slashIndex: int = fSlash > bSlash ? fSlash : bSlash;

To daje indeks w ciąg, który jest tuż przed tym ostatnim ukośnik. Tak więc zwrócić część napisu po tym, dodać jeden do indeksu (Moving piłkę do ostatniego ukośnik) i zwrot pozostałej części łańcucha

var docName: String = fullPath.substr(slashIndex + 1);

Aby to zrobić, jak prosty w użyciu funkcji, to zrobić:

function getFileName(fullPath: String) : String 
{ 
    var fSlash: int = fullPath.lastIndexOf("/"); 
    var bSlash: int = fullPath.lastIndexOf("\\"); // reason for the double slash is just to escape the slash so it doesn't escape the quote!!! 
    var slashIndex: int = fSlash > bSlash ? fSlash : bSlash; 
    return fullPath.substr(slashIndex + 1); 
} 

var fName: String = getFileName(myFullPath);
+0

Dzięki za kod. Mam jednak ciąg dynamiczny, który wygląda jak "D: \ temp \ abc.doc". getFileName ("D: \ temp \ abc.doc") zwraca "D: empabc.doc". –

+0

Nie, nie robisz :) Backslashes działają jako ucieczki, gdy tworzysz ciąg, dlatego \ n tworzy nową linię, \ t tworzy zakładkę itp. Twój ciąg "D: \ temp \ abc.doc" faktycznie się kończy jako "D: {tab} emp {symbol} bc.doc, nie utworzyłeś łańcucha zawierającego ukośniki, chyba że uciekniesz przed ukośnikami, np. \\ –

9

dla powietrza, można spróbować użyć File Class wyodrębnić nazwy pliku

var file:File=new File("path_string"); 
//path_string example "C:\\Windows\\myfile.txt" 
var filename:String = file.name; 
0

Spróbuj:

var file_ :File = new File("C:/Usea_/Dtop/sinim (1).jpg"); // or url variable ... whatever// 

file_ = file_.parent; 

trace(file_.url); 
0

Można użyć coś takiego wykonać zadanie:

var tmpArray:Array<String>; 
var fileName:String; 

tmpArray = fullFilePath.split("\"); 
fileName = tmpArray.pop(); 

Trzeba zadbać, jeśli używasz systemu plików UNIX („/”) lub systemu plików Windows („\”).

Powiązane problemy