Muszę pobrać ostatnią część bieżącego katalogu, na przykład z /Users/smcho/filegen_from_directory/AIRPassthrough
, muszę pobrać AIRPassthrough
.
W Pythonie mogę to uzyskać za pomocą tego kodu.
import os.path
path = "/Users/smcho/filegen_from_directory/AIRPassthrough"
print os.path.split(path)[-1]
Lub
print os.path.basename(path)
Jak mogę zrobić to samo z C #?
DODANY
Z pomocą osób odpowiadających znalazłem to, czego potrzebowałem.
using System.Linq;
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = fullPath.Split(Path.DirectorySeparatorChar).Last();
lub
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = Path.GetFileName(fullPath);
os.path.basename(path)
.Odpowiedzi:
Szukasz
Path.GetFileName
.Pamiętaj, że to nie zadziała, jeśli ścieżka kończy się na
\
.źródło
Path.GetFileName("/Users/smcho/filegen_from_directory/AIRPassthrough")
do LINQPad, jeśli mi nie wierzysz.Path
Klasa obsługuje zarówno separatory.Możesz spróbować:
źródło
Cóż, żeby dokładnie odpowiedzieć na twoje pytanie w tytule :-)
źródło
To nieco inna odpowiedź, w zależności od tego, co masz. Jeśli masz listę plików i chcesz uzyskać nazwę ostatniego katalogu, w którym znajduje się plik, możesz to zrobić:
To zwróci „2938_parentid”
źródło
zamiast używać „/” do wywołania podziału, lepiej użyć
Path.DirectorySeparatorChar
:tak:
źródło
Działa to, jeśli ścieżka zawiera separatory z ukośnikiem w przód lub w lewo.
źródło
.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
też działa.Spróbuj tego:
Kod może być wyłączony (nie testowałem go), ale pomysł powinien działać
źródło
U mnie to działa idealnie :)
źródło
Możesz wypróbować poniższy kod:
Path.GetFileName(userpath)
źródło
Możesz także użyć klasy Uri.
Możesz użyć tej klasy, jeśli chcesz uzyskać inny segment lub jeśli chcesz zrobić to samo z adresem internetowym.
źródło