Preciso obter a última parte do diretório atual, por exemplo /Users/smcho/filegen_from_directory/AIRPassthrough
, preciso obter AIRPassthrough
.
Com python, posso obtê-lo com este código.
import os.path
path = "/Users/smcho/filegen_from_directory/AIRPassthrough"
print os.path.split(path)[-1]
Ou
print os.path.basename(path)
Como posso fazer a mesma coisa com c #?
ADICIONADO
Com a ajuda dos respondentes, encontrei o que precisava.
using System.Linq;
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = fullPath.Split(Path.DirectorySeparatorChar).Last();
ou
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = Path.GetFileName(fullPath);
os.path.basename(path)
.Respostas:
Você está procurando
Path.GetFileName
.Observe que isso não funcionará se o caminho terminar em a
\
.fonte
Path.GetFileName("/Users/smcho/filegen_from_directory/AIRPassthrough")
no LINQPad se não acredita em mim.Path
classe lida com os dois separadores.Você poderia tentar:
fonte
Bem, para responder exatamente ao título da sua pergunta :-)
fonte
Esta é uma resposta ligeiramente diferente, dependendo do que você tem. Se você possui uma lista de arquivos e precisa obter o nome do último diretório em que o arquivo está, você pode fazer isso:
Isso retornará "2938_parentid"
fonte
em vez de usar o '/' para a chamada ser dividida, é melhor usar o
Path.DirectorySeparatorChar
:igual a:
fonte
Isso funciona se o caminho contiver separadores de barra invertida ou separadores de barra invertida.
fonte
.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
funciona.Tente o seguinte:
O código pode estar desativado (não testei), mas a ideia deve funcionar
fonte
Isso funciona perfeitamente bem comigo :)
fonte
Você pode tentar o código abaixo:
Path.GetFileName(userpath)
fonte
Você também pode usar a classe Uri.
Você pode preferir usar essa classe se desejar obter outro segmento ou se quiser fazer a mesma coisa com um endereço da web.
fonte