2014-11-19 20 views
8

Ho un elenco che sembra qualcosa di simile:Come posso ottenere l'ultima cartella da una stringa di percorso?

C:\Users\me\Projects\ 

Nella mia domanda, mi aggiungere a quel percorso di un determinato nome del progetto:

C:\Users\me\Projects\myProject 

Dopo, voglio essere in grado di passare che in un metodo. All'interno di questo metodo vorrei anche usare il nome del progetto. Qual è il modo migliore per analizzare la stringa del percorso per ottenere l'ultimo nome della cartella?

Conosco una soluzione per passare il percorso e il nome del progetto nella funzione, ma speravo di poterlo limitare a un parametro.

+2

hai provato qualcosa? – Haris

+0

A malapena. Ho cercato in giro e ho trovato alcune domande simili, ma non sono riuscito a trovarne uno che facesse ciò di cui avevo bisogno. La mia migliore ipotesi è che la classe 'Path' abbia un metodo per questo, ma non so cosa. – AdamMc331

+2

L'utilizzo di un solo parametro non è necessariamente la soluzione migliore. –

risposta

30

Si può fare:

string dirName = new DirectoryInfo(@"C:\Users\me\Projects\myProject\").Name; 

Oppure utilizzare Path.GetFileName come (con un po 'di hack):

string dirName2 = Path.GetFileName(
       @"C:\Users\me\Projects\myProject".TrimEnd(Path.DirectorySeparatorChar)); 

Path.GetFileName restituisce il nome del file dal percorso, se il percorso è terminato con \ restituirebbe una stringa vuota, ecco perché ho usato TrimEnd(Path.DirectorySeparatorChar)

+0

Il metodo DirectoryInfo ha funzionato. Penserei che sia il metodo preferito? Grazie! – AdamMc331

+0

Entrambi dovrebbero funzionare, ma IMO, sì 'DirectoryInfo' è più pulito e trasmette l'intento in modo più chiaro. – Habib

+0

Mi piace 'DirectoryInfo' perché vedo che funziona indipendentemente dal fatto che sia terminato o meno con un' \\ '. Non dovrebbe essere, nella mia applicazione, ma l'ho provato in entrambi i modi per ogni evenienza. Sembra anche più pulito. – AdamMc331

1
string path = @"C:\Users\me\Projects\myProject"; 
string result = System.IO.Path.GetFileName(path); 

result = myProject

+4

Questo non funzionerà se il percorso termina con una barra rovesciata come '" C: \ Users \ me \ Projects \ myProject \ "' – Habib