Entwickler-Ecke

Sonstiges (.NET) - Verzeichnisname ermitteln


friesi - Mi 15.11.06 01:43
Titel: Verzeichnisname ermitteln
Hallo :)

Ich habe nochmal eine Frage.
In einem string steht ein Pfad:


C#-Quelltext
1:
string dir = "c:\das\ist\ein\pfad";                    


Nun würde ich gerne das letzte Verzeichnis als string haben (also pfad).

Könnte mir jemand einen tipp geben, wie ich bis zum letzten "\" den String ermittel?


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mi 15.11.2006 um 01:43


friesi - Mi 15.11.06 01:53

Hat sich erledigt :)


C#-Quelltext
1:
2:
3:
4:
5:
6:
string dir = "c:\das\ist\ein\pfad";

char[] splitter = {'\\'};

string[] dirs = dir.Split(splitter);
string dirname = dirs[dirs.Length-2];


JüTho - Mi 15.11.06 10:14

Auch wenn Du selbst einen Weg gefunden hast - der folgende dürfte besser sein:

C#-Quelltext
1:
2:
int i0 = dir.LastIndexOf('\');
dirname = dir.SubString(i0);

Gruß Jürgen


Kha - Mi 15.11.06 19:57

Nicht ganz, so sollte es schon eher hinpassen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
static string ExtractDirectoryName(string path)
{
  char[] separators = new char[] {
    Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar
  };
  
  int stop = path.LastIndexOfAny(separators);
  if (stop == -1)
    return null;
  
  return Path.GetFileName(path.Substring(0, stop));
}


friesi - Mi 15.11.06 21:01

Danke für die ganzen weiteren (optimierten) Möglichkeiten.


UGrohne - Do 16.11.06 09:17

Also bevor ich das Ganze selbst zerpflücke, mache ich das lieber so:

C#-Quelltext
1:
2:
3:
4:
string path = @"c:\windows\System32\";
string dirname;
path = path.Trim('\\');
dirname = System.IO.Path.GetFileName(path);


friesi - Do 16.11.06 09:56

Warum schreibt man eigentlich immer ein @ vor den Pfad?


C#-Quelltext
1:
string path = @"c:\windows\System32\";                    


Hab ich jetzt schon öfters gesehen!


Delete - Do 16.11.06 11:39

weil man sonst ein "\\" im Pfadnamen eingeben muss, da "\" ein Steuerzeichen ist.


Kha - Do 16.11.06 14:00

user profile iconUGrohne hat folgendes geschrieben:
Also bevor ich das Ganze selbst zerpflücke, mache ich das lieber so:
Nicht ganz das Geforderte, du müsstest Trim durch LastIndexOf ersetzen. Wenn du die Funktion nun noch plattformunabhängig gestaltest, sind wir beim gleichen Code angelangt, weil ich nun dafür GetFilename übernommen habe ;) .

@friesi: Unbekannte Operatoren oder Funktionen einfach mal in den SDK-Index eintippen.