Ответ 1
Вы ищете Path.GetFileName
.
Обратите внимание, что это не будет работать, если путь заканчивается на \
.
Мне нужно получить последнюю часть текущего каталога, например, из /Users/smcho/filegen_from_directory/AIRPassthrough
, мне нужно получить AIRPassthrough
.
С python я могу получить его с помощью этого кода.
import os.path
path = "/Users/smcho/filegen_from_directory/AIRPassthrough"
print os.path.split(path)[-1]
или
print os.path.basename(path)
Как я могу сделать то же самое с С#?
С помощью ответчиков я нашел то, что мне нужно.
using System.Linq;
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = fullPath.Split(Path.DirectorySeparatorChar).Last();
или
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = Path.GetFileName(fullPath);
Вы ищете Path.GetFileName
.
Обратите внимание, что это не будет работать, если путь заканчивается на \
.
Вы можете попробовать:
var path = @"/Users/smcho/filegen_from_directory/AIRPassthrough/";
var dirName = new DirectoryInfo(path).Name;
Самый простой способ получить имя папки - инициализировать экземпляр DirectoryInfo с помощью пути.
string path = "/Users/smcho/filegen_from_directory/AIRPassthrough";
string result = new DirectoryInfo(path).Name;
Это работает так же, если путь заканчивается или без разделителя каталогов, и если используется передний или задний сегмент.
Хорошо, чтобы точно ответить на ваш вопрос: -)
var lastPartOfCurrentDirectoryName =
Path.GetFileName(Environment.CurrentDirectory);
Это немного другой ответ, в зависимости от того, что у вас есть. Если у вас есть список файлов и вам нужно получить имя последнего каталога, в котором находится файл, вы можете сделать это:
string path = "/attachments/1828_clientid/2938_parentid/somefiles.docx";
string result = new DirectoryInfo(path).Parent.Name;
Это вернет "2938_parentid"
а затем используя '/' для разрыва вызова, лучше использовать Path.DirectorySeparatorChar
:
так:
path.split(Path.DirectorySeparatorChar).Last()
var lastFolderName = Path.GetFileName(
path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));
Это работает, если путь содержит разделители с прямой или обратной косой чертой.
Попробуйте следующее:
String newString = "";
Sting oldString = "/Users/smcho/filegen_from_directory/AIRPassthrough";
int indexOfLastSlash = oldString.LastIndexOf('/', 0, oldString.length());
newString = oldString.subString(indexOfLastSlash, oldString.length());
Код может быть выключен (я его не тестировал), но идея должна работать
Это прекрасно работает со мной :)
Path.GetFileName(path.TrimEnd('\\')
Вы можете попробовать ниже код:
Path.GetFileName(userpath)