2009-04-13 12 views

Antwort

4

Sie konnte nicht nur das tun, grundlegende so etwas wie:

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

Ich weiß, es ist kein einziger Funktionsaufruf, aber es sollte genauso funktionieren.

Bearbeitet basierend auf @Bryan Grezeszaks Kommentar.

+0

Die vollständige Pfadzeichenfolge wird dynamisch aufgenommen, wenn der Benutzer eine Datei auswählt und wie folgt aussieht: "c: \ temp \ abc.doc" lastIndexOf ("\\") funktioniert nicht wie oben beschrieben. –

+0

warum nicht? lastIndexOf ("\\") bedeutet, dass Sie das letzte "\" finden und seinen Index in der Zeichenfolge angeben. – meandmycode

+0

Sie befinden sich auf dem richtigen Pfad, aber Sie müssen einen Index hinzufügen, um den tatsächlichen Schrägstrich aus dem Finale zu entfernen Ergebnis :) –

2

Anscheinend können Sie die File Klasse oder genauer das statische Mitglied File.separator verwenden, wenn Sie mit AIR arbeiten. Es sollte "/" oder "\" zurückgeben, die Sie an @cmptrgeekkens Vorschlag anschließen können.

4

Zuerst das letzte Vorkommen/oder \ im Weg finden wollen, tun dies mit:

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;

die Sie in der Zeichenfolge, die den Index geben, die direkt vor ist, dass letzten Schrägstrich. Also dann nach, dass der Teil der Zeichenfolge zurück, fügen Sie ein zum Index (es nach dem letzten Schrägstrich bewegt) und gibt den Rest der Zeichenfolge

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

Um dies zu tun, als eine einfache Funktion zu nutzen, dies tun:

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

Danke für den Code. Ich habe jedoch eine dynamische Pfadzeichenfolge, die wie "D: \ temp \ abc.doc" aussieht. getFileName ("D: \ temp \ abc.doc") gibt "D: empabc.doc" zurück. –

+0

Nein, Sie nicht :) Backslashes fungieren als Escapes, wenn Sie eine Zeichenfolge machen, deshalb \ n macht eine neue Zeile, \ t macht eine Registerkarte, etc. Ihre Zeichenfolge von 'D: \ temp \ abc.doc' endet tatsächlich oben als 'D: {tab} emp {symbol} bc.doc, hast du nicht wirklich eine Zeichenkette gemacht, die irgendwelche Schrägstriche enthält, außer du entziehst die Schrägstriche, wie \\ –

9

für Luft, können Sie versuchen, File Klasse mit Dateinamen

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

versuchen Sie, diese zu extrahieren:

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

file_ = file_.parent; 

trace(file_.url); 
0

Sie können so etwas wie diese verwenden, um die Arbeit zu erledigen:

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

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

Sie haben dafür Sorge zu tragen, wenn Sie Unix-Dateisystem verwenden („/“) oder Windows-Dateisystem („\“).

Verwandte Themen