|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
No mostrar la extensión de un archivo
¿Como haceis para mostrar un nombre de un archivo sin su extensión?
Con "MiFichero[i].getName()" me da el nombre con la extensión. He intentado (y conseguido) eliminarla con "MiFichero[i].getName().substring(0,(MiFichero[i].getName().length()-4)))" pero me horroriza lo larga que ha quedado la frase, además que la extensión no tiene porque tener siempre tamaño 4... ¿no hay una forma automática de hacerlo?, ¿o más fácil?. EDITO: Al final lo del tamaño variable de la extensión lo he resuelto con: MiFichero[i].getName().substring(0,(MiFichero[i].getName().lastIndexOf("."))) pero sigo preguntando si no hay algún método más sencillo. Última edición por Marciano Verde Día 12/09/13 a las 13:32:08. |
|
|
|
#2
|
||||
|
||||
|
En el API de Android no hay nada, la solución que propones sirve solo si el fichero tiene extensión. Si no tiene extensión el lastIndexOf devuelve -1 y el substring (0,-1) te dará un error.
Si es para ficheros generados por tu propia app y sabes que van a tener el punto, no vas a encontrar nada que ocupe menos. En stackoverflow alguien recomendaba usar la biblioteca Apache Commons I/O http://stackoverflow.com/questions/9...string-in-java que tiene un método removeExtension y parece interesante si quisieras una solución totalmente genérica y a prueba de errores.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
|
#3
|
||||
|
||||
|
Igual te sirve:
MiFichero[i].getName().split(".")[0]; Si tiene extensión te la quita y te dará la primera parte, y si no la tiene te lo va a dejar igual Creo que te funcionaría, creo que no se me escapa nada
__________________
Mis apps en el Market:
https://market.android.com/search?q=hexahis&so=1&c=apps http://www.appfutura.com/dev/Hexahis |
|
#4
|
||||
|
||||
|
EDIT: Espera, que es una expresión regular! Habría que poner split("\\.")
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Última edición por mocelet Día 12/09/13 a las 15:12:07. |
|
#5
|
||||
|
||||
|
Gracias a los dos.
@Mocelet No hay riesgo de que lastIndexOf retorne un -1, ya que previamente hago un if: if (MiFichero[i].getName().endsWith(Pattern1)) { de manera que si el archivo tiene la extención que yo quiero muestro su nombre sin extensión. Si entra al IF es que tiene extensión, y además es la que yo quiero. Otro solución sería no hacer el lastIndexOf dentro del substring, si no, hacerlo por fuera cargando el valor retornado en una variable y si es negativo, darle el valor 0. @hecsagis Me gustaba tu idea, pero como dice @mocelet, valdría si no hay más puntos en el nombre, lo he estado provando y se queda con la cadena que va desde el principio hasta el primer punto. De todas formas, ¿Para que es eso de "[0]" que pones al final? bueno, de momento y ya que se que mi archivo tendrá extensión, me quedo con lo de: MiFichero[i].getName().substring(0,(MiFichero[i].getName().lastIndexOf("."))) |
|
#6
|
||||
|
||||
|
El split devuelve un array de strings que contiene todas las cadenas obtenidas tras separar por el "." en este caso.
Por ejemplo si haces un split de: String[] separar = "esto.es.un.ejemplo".split("."); Devolveria separar[0] = esto ... separar[2] = ejemplo
__________________
Mis apps en el Market:
https://market.android.com/search?q=hexahis&so=1&c=apps http://www.appfutura.com/dev/Hexahis |
|
#7
|
||||
|
||||
|
Ah vale, no lo sabía, luego habría que concatenar todos esos strings menos el último y además añadir un puntito entre uno y otro.
Para este caso no me resulta interesante, pero me lo anoto para usos futuros. |
![]() |
Estás aquí
|
||||||
|
||||||