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

Respuesta
 
Herramientas
  #1  
Viejo 12/09/13, 13:10:15
Array

[xs_avatar]
Marciano Verde Marciano Verde no está en línea
Miembro del foro
 
Fecha de registro: mar 2013
Mensajes: 65
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Movistar
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.
Responder Con Cita


  #2  
Viejo 12/09/13, 14:32:13
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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!
Responder Con Cita
  #3  
Viejo 12/09/13, 15:05:36
Array

[xs_avatar]
hecsagis hecsagis no está en línea
Desarrollador
· Votos compra/venta: (1)
 
Fecha de registro: mar 2009
Mensajes: 266
Modelo de smartphone: Nexus 5
Tu operador: Vodafone
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
Responder Con Cita
  #4  
Viejo 12/09/13, 15:09:56
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

 Cita: Originalmente Escrito por hecsagis Ver Mensaje
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
En el caso de que no existieran más puntos en el nombre del fichero, valdría, sí.

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.
Responder Con Cita
  #5  
Viejo 12/09/13, 16:47:10
Array

[xs_avatar]
Marciano Verde Marciano Verde no está en línea
Miembro del foro
 
Fecha de registro: mar 2013
Mensajes: 65
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Movistar
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(".")))
Responder Con Cita
  #6  
Viejo 12/09/13, 17:27:01
Array

[xs_avatar]
hecsagis hecsagis no está en línea
Desarrollador
· Votos compra/venta: (1)
 
Fecha de registro: mar 2009
Mensajes: 266
Modelo de smartphone: Nexus 5
Tu operador: Vodafone
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
Responder Con Cita
  #7  
Viejo 12/09/13, 18:07:40
Array

[xs_avatar]
Marciano Verde Marciano Verde no está en línea
Miembro del foro
 
Fecha de registro: mar 2013
Mensajes: 65
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Movistar
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.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 15:11:04 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /