web-dev-qa-db-fra.com

Supprimer l'extension de fichier d'une chaîne de nom de fichier

Si j'ai une chaîne disant "abc.txt", existe-t-il un moyen rapide d'obtenir une sous-chaîne qui est simplement "abc"?

Je ne peux pas faire de fileName.IndexOf('.') parce que le nom du fichier pourrait être "abc.123.txt" ou quelque chose du genre et que je souhaite évidemment simplement supprimer l’extension (c.-à-d. "abc.123").

175
tweetypi

La méthode Path.GetFileNameWithoutExtension vous donne le nom du fichier que vous transmettez en tant qu'argument sans extension, comme cela devrait être évident à partir du nom.

335

Il existe une méthode dans le cadre à cet effet, qui garde le chemin complet à l'exception de l'extension.

System.IO.Path.ChangeExtension(path, null);

Si seul le nom de fichier est nécessaire, utilisez

System.IO.Path.GetFileNameWithoutExtension(path);
219
Ran QUAN

Vous pouvez utiliser

string extension = System.IO.Path.GetExtension(filename);

Et puis supprimez l'extension manuellement:

string result = filename.Substring(0, filename.Length - extension.Length);
54
phdesign

String.LastIndexOf fonctionnerait.

string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
 fileName= fileName.Substring(0, fileExtPos);
25
Andrew

Si vous voulez créer un chemin complet sans extension, vous pouvez faire quelque chose comme ceci:

Path.Combine( Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath))

mais je cherche un moyen plus simple de le faire. Est-ce que quelqu'un a une idée?

11
Logman

J'ai utilisé le code ci-dessous, moins


string fileName = "C:\file.docx";
MessageBox.Show(Path.GetDirectoryName(fileName)+"\\"+Path.GetFileNameWithoutExtension(fileName));
   
3
Benjym

si vous souhaitez utiliser l'opération String, vous pouvez utiliser la fonction lastIndexOf (), qui recherche la dernière occurrence d'un caractère ou d'une sous-chaîne. Java possède de nombreuses fonctions de chaîne.

1
Shraddha

Vous ne demandez peut-être pas à l'API UWP. Mais dans UWP, file.DisplayName est le nom sans extensions. Espoir utile pour les autres.

1
sudoer