lunes, 29 de junio de 2009

Separar Número y Letra del NIF en Java

Vamos a ver un ejemplo sencillo de cómo separar el número y la letra del NIF que aparece en los carnets de identidad.


Puede ocurrirnos que nos lo den como un String y necesitemos guardarlo en variables distintas o imprimir sólo el DNI. Nosotros simplemente mostraremos el número en una línea y la letra en otra.


Se nos pueden presentar dos casos:






Caso A. Número y letra separados por un guión. Ejemplo: 11111111-A.



Éste se resuelve de forma más sencilla. Usamos StringToquenizer poniendo como carácter separador el guión:




String strDatos="11111111-A";
StringTokenizer tokens=new StringTokenizer(strDatos, "-");
while(tokens.hasMoreTokens()){
System.out.println(tokens.nextToken());
}



nif1.png






Caso B. Número y letra van seguidos. Ejemplo: 11111111A.



Aquí no tenemos caracter separador, así que tenemos que convertir el String en un vector de Char. Recorreremos ese vector comprobando si la posición actual es una letra. Para ello usaremos el método isLetter de la clase Character:




String strDatos="111111A";
char[] ca = strDatos.toCharArray();
for(int i=0; i<strDatos.length();i++)
{
if(Character.isLetter(ca[i])) //Si es letra
System.out.println("\n"+ca[i]); //Salto de línea e imprimimos el carácter
else //Si no es letra
System.out.print(ca[i]); //Imprimimos el carácter
}



nif1.png




4 Comentarios:

writkas dijo...

a veces para el caso A falta:
import java.util.StringTokenizer;

gracias por la ayuda me sirvió :)

Felipe Martínez D. dijo...

Hola writkas.

Efectivamente, hay que importar StringTokenizer, del paquete java.util . Gracias por comentar.

Saludos.

Santiago González Rodriguez dijo...

Buenas tardes chicos! resulta que se me presentó un problema de trabajo para renombrar unos archivos... por ejemplo tengo un archivo " 12345 Andres Perez.pdf" pero el nombre para poder ser indexado en el software que utilizamos acá debe estar de la forma "Andres Perez 12345.pdf", mi pregunta es, ¿Con esta función de Java puedo cambiar simplemente la posición de los caracteres de manera que primero queden los char y al final los int?

Agradezco su ayuda, la verdad no soy muy experto programando...

Mi correo: santiago9102@gmail.com

Felipe Martínez D. dijo...

Hola Santiago.

Ésta función no te va a servir, ya que lo que tu quieres hacer es renombrar un archivo y éste ejemplo lo que pretende modificar una cadena de caracteres según un criterio (separar número de la letra en el DNI).

Te aconsejo que utilices un renombrador masivo de archivos. Si estás en Windows puedes utilizar Rename Master (http://www.genbeta.com/windows/rename-master-potente-renombrador-masivo-de-archivos-para-windows). Si utilizas Linux, hice un artículo en el que se explicaba como renombrar archivos masivamente: http://felinfo.blogspot.com.es/2010/12/renombrar-archivos-masivamente-en-linux.html

Espero que te sirva.

Saludos.

Publicar un comentario

Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO