Eliminar la extensión de archivo de una cadena de nombre de archivo

Resuelto meds asked hace 13 años • 13 respuestas

Si tengo una cadena que dice "abc.txt", ¿hay alguna manera rápida de obtener una subcadena que sea justa "abc"?

No puedo hacer fileName.IndexOf('.')porque el nombre del archivo podría ser "abc.123.txt"o algo así y obviamente solo quiero deshacerme de la extensión (es decir "abc.123").

meds avatar Sep 09 '11 08:09 meds
Aceptado

El Path.GetFileNameWithoutExtensionmétodo le proporciona el nombre del archivo que pasa como argumento sin la extensión, como debería ser obvio por el nombre.

R. Martinho Fernandes avatar Sep 09 '2011 01:09 R. Martinho Fernandes

Hay un método en el marco para este propósito, que mantendrá la ruta completa excepto la extensión.

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

Si sólo se necesita el nombre del archivo, utilice

System.IO.Path.GetFileNameWithoutExtension(path);
Ran QUAN avatar Aug 06 '2014 08:08 Ran QUAN

Puedes usar

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

Y luego elimine la extensión manualmente:

string result = filename.Substring(0, filename.Length - extension.Length);
phdesign avatar Sep 09 '2011 01:09 phdesign

String.LastIndexOf funcionaría.

string fileName= "abc.123.txt";
int fileExtPos = fileName.LastIndexOf(".");
if (fileExtPos >= 0 )
 fileName= fileName.Substring(0, fileExtPos);
Andrew avatar Sep 09 '2011 01:09 Andrew

Quizás no le preguntes a la API de UWP. Pero en UWP, file.DisplayNamees el nombre sin extensiones. Espero que sea útil para otros.

sudoer avatar Jun 30 '2017 20:06 sudoer