Si tengo una cadena que dice "abc.txt"
, ¿hay una manera rápida de obtener una subcadena que sea solo"abc"
?
No puedo hacerlo 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"
).
Hay un método en el marco para este propósito, que mantendrá la ruta completa a excepción de la extensión.
Si solo se necesita el nombre del archivo, use
fuente
null
tiene un valor mágico aquí. Si usaString.Empty
aka,""
se le dejará un punto final [.
].GetFileNameWithoutExtension
Es más explícito. Aunque es agradable saber sobre su efecto secundario potencialmente no deseado y la existencia de una alternativa para evitarlo.Puedes usar
Y luego elimine la extensión manualmente:
fuente
String.LastIndexOf funcionaría.
fuente
foo/bar.cat/cheese
!String.LastIndexOf
es peligroso por lograr algo como esto. Para archivos sin extensión, como @Cameron ha indicado anteriormente, sus resultados pueden no ser lo que desea. La forma más segura de hacerlo es usando la respuesta de @ Logman arriba.Si desea crear una ruta completa sin extensión, puede hacer algo como esto:
pero estoy buscando una forma más sencilla de hacerlo. ¿Alguien tiene alguna idea?
fuente
Usé el siguiente, menos código
La salida será
fuente
Path.Combine()
lugar de especificar"\\"
.si desea usar la operación de cadena, puede usar la función lastIndexOf () que busca la última aparición de un carácter o subcadena. Java tiene numerosas funciones de cadena.
fuente
Tal vez no le preguntes a la API de UWP. Pero en UWP,
file.DisplayName
es el nombre sin extensiones. Espero sea útil para los demás.fuente
Sé que es una vieja pregunta y
Path.GetFileNameWithoutExtension
es una opción mejor y quizás más limpia. Pero personalmente, he agregado estos dos métodos a mi proyecto y quería compartirlos. Esto requiere C # 8.0 debido a que utiliza rangos e índices.fuente
fuente
fuente
Esta implementación debería funcionar.
fuente
abc.txt.pdf
? :-)