2013-04-07 27 views

Odpowiedz

27
string path = "C://hello//world"; 
int pos = path.LastIndexOf("/") + 1; 
Console.WriteLine(path.Substring(pos, path.Length - pos)); // prints "world" 

Sposób LastIndexOf wykonuje takie same jak IndexOf .. ale od końca łańcucha.

3

Proponuję, patrząc na przestrzeń nazw System.IO, ponieważ wydaje się, że możesz z niej skorzystać. Istnieje również DirectoryInfo i FileInfo, które mogą być przydatne również tutaj. Konkretnie DirectoryInfo's Name property

var directoryName = new DirectoryInfo(path).Name; 
9

Jest statyczna klasa do pracy ze ścieżkami zwanych Path.

Możesz uzyskać pełną nazwę pliku za pomocą Path.GetFileName.

lub

można uzyskać nazwę pliku bez rozszerzenia z Path.GetFileNameWithoutExtension.

+1

myślałem o tym, ale zauważ, że PO wydaje się nie być skupienie się na pliku, ale katalogiem –

9

using System.Linq;

var s = "C://hello//world"; 
var last = s.Split('/').Last(); 
1

Spróbuj tego:

string worldWithPath = "C://hello//world"; 
string world = worldWithPath.Substring(worldWithPath.LastIndexOf("/") + 1); 
+1

To samo rozwiązanie już wysłany przez Simona Whiteheada (http://stackoverflow.com/a/15857606/2029849), oprócz wyraźnie określonej długości w wywołaniu metody 'Substring'. – abto

+0

To jest mądrzejsze rozwiązanie zamiast @abto – Lali