2009-04-13 8 views

Respuesta

4

no pudiste hacer algo básico como:

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

Sé que no es una llamada de función única, pero debería funcionar de la misma manera.

Editado según el comentario de @Bryan Grezeszak.

+0

La cadena de ruta completa se recoge dinámicamente cuando el usuario selecciona un archivo y se ve como "c: \ temp \ abc.doc" lastIndexOf ("\\") no funciona para arriba. –

+0

¿por qué no? lastIndexOf ("\\") significa encontrar el último '\' y decirme su índice en la cadena ... – meandmycode

+0

Estás en el camino correcto, pero debes agregar uno al índice para eliminar la barra real del final resultado :) –

2

Aparentemente puede usar la clase File, o más específicamente, el miembro estático File.separator si está trabajando con AIR. Debería devolver "/" o "\", que puede agregar a la sugerencia de @ cmptrgeekken.

4

En primer lugar que desea encontrar la última aparición de/o \ en el camino, hacer que el uso de este:

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;

que le dará el índice de la cadena que es justo antes de que la última barra. De manera que para devolver la porción de la cadena después de eso, se agrega uno al índice (que se mueve más allá de la última barra) y devuelve el resto de la cadena

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

Para hacer esto como un simple utilizar la función, hacer esto:

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

Gracias por el código. Sin embargo, tengo una cadena de ruta dinámica que se parece a "D: \ temp \ abc.doc". getFileName ("D: \ temp \ abc.doc") devuelve "D: empabc.doc". –

+0

No, no lo haces :) Las barras diagonales actúan como escapes cuando creas una cadena, por eso \ n crea una nueva línea, \ t crea una pestaña, etc. Tu cadena de 'D: \ temp \ abc.doc' en realidad termina como 'D: {tab} emp {symbol} bc.doc, en realidad no creó una cadena que contenga barras a menos que escape de las barras, como \\ –

9

para aire, puede probar a usar File clase para extraer el nombre del archivo

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

Prueba esto:

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

file_ = file_.parent; 

trace(file_.url); 
0

Puede usar algo como esto para hacer el trabajo:

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

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

Tienes que tener cuidado si está utilizando el sistema de archivos de Unix ("/") o el sistema de archivos de Windows ("\").

Cuestiones relacionadas