Se eu tenho uma string dizendo "abc.txt"
, existe uma maneira rápida de obter uma substring justa "abc"
?
Eu não posso fazer um fileName.IndexOf('.')
porque o nome do arquivo poderia ser "abc.123.txt"
ou algo assim e, obviamente, só quero me livrar da extensão (ou seja "abc.123"
).
Há um método na estrutura para esse fim, que manterá o caminho completo, exceto a extensão.
Se apenas o nome do arquivo for necessário, use
fonte
null
valor mágico aqui. Se você usarString.Empty
aka,""
você ficará com um.
ponto [ ] à direita .GetFileNameWithoutExtension
é mais explícito. Embora seja bom saber sobre seu efeito colateral potencialmente indesejado e a existência de uma alternativa para evitá-lo.Você pode usar
E remova a extensão manualmente:
fonte
String.LastIndexOf funcionaria.
fonte
foo/bar.cat/cheese
!String.LastIndexOf
é perigoso para realizar algo assim. Para arquivos sem extensão, como a @Cameron afirmou acima, seus resultados podem não ser o que você deseja. A maneira mais segura de fazer isso é usando a resposta de @ Logman acima.Se você deseja criar o caminho completo sem extensão, pode fazer algo assim:
mas estou procurando uma maneira mais simples de fazer isso. Alguém tem alguma ideia?
fonte
Eu usei o código abaixo, menos
A saída será
fonte
Path.Combine()
vez de especificar"\\"
.se você quiser usar a operação String, poderá usar a função lastIndexOf () que Pesquisa a última ocorrência de um caractere ou substring. Java possui inúmeras funções de string.
fonte
Você talvez não esteja pedindo a API da UWP. Mas em UWP,
file.DisplayName
é o nome sem extensões. Espero que seja útil para os outros.fonte
Eu sei que é uma pergunta antiga e
Path.GetFileNameWithoutExtension
é uma opção melhor e talvez mais limpa. Mas, pessoalmente, adicionei esses dois métodos ao meu projeto e queria compartilhá-los. Isso requer C # 8.0 devido a ele usar intervalos e índices.fonte
fonte
fonte
Esta implementação deve funcionar.
fonte
abc.txt.pdf
? :-)