Cuando nos comunicamos con sistemas legados nos encontramos muchos casos en los cuales los tamaños de los números son fijos. Y en estos casos hay que rellenar la información con ceros a la izquierda para que el sistema pueda dar una respuesta.
Para estos casos podemos jugar con la clase Formatter, la cual nos ayudará a formatear diferentes elementos, aplicando una cadena de formato y mediante el método .format().
Dos simples líneas de código. La primera será intanciar la clase:
Formatter fmt = new Formatter();
La segunda, aplicar el formato:
fmt.format("%08d",numero);
Lo importante para añadir ceros a la izquierda es el formato a aplicar «%08d». Si entramos en detalle en este formato vemos que en todo formato se identifican las siguientes partes:
%[argument_index$][flags][width]conversion
1. argument_index, es el id del argumento al que queremos aplicar el formato. Esto se aplica si tenemos varios elementos a formatear a la vez.
Por ejemplo:
int numero = 425;
fmt.format("Primer número %1$08d - Segundo número %2$08d ",numero,numero2);
Vemos que el formateador empieza por %1$ o %2$ indicando el elemento (numero o numero2) sobre el que aplica el formato.
2. flags, son las conversiones a aplicar al elemento. Las conversiones dependen del tipo de conversión que efectuemos. La indicada en la parte de conversión. Algunos tipos de flags son: ‘-‘ para la justificación a izquierda, ‘+’ para incluir los signos,… y el que nos interesa en nuestro caso ‘0’ que rellena el tamaño a ceros.
3. width, es el tamaño que le queremos dar al resultado. En nuestro caso le damos un tamaño de 8 dígitos. Y como el número es de 3 dígitos, tendremos 5 ceros a la izquierda
4. conversion, tipo de conversión a realizar: ‘d’ para enteros (nuestro caso), ‘o’ para octales,…
Veamos el código completo:
int numero = 425;
Formatter fmt = new Formatter();
fmt.format("%08d",numero);
System.out.println("El numero formateado " + fmt);