sábado, 4 de septiembre de 2010

Java: rellenar cadena con espacios

A partir java 1.5 podemos usar la funcion String.format() que funciona de un modo similar al printf de C para rellenar con espacios una cadena.

Si queremos rellenar el String micadena de modo que tenga 10 espacios al final de la cadena usaremos la sentencia siguientes:
String micadena = "123";
String nuevacadena = String.format("%1$-10s",micadena);

de modo que genere la cadena "123 ".
Si usásemos la sentencia:
String nuevacadena = String.format("%1$#10s",micadena);

Los espacios se colocarán al principio, obtendremos " 123".

La función puede recibir varios argumentos o repetir el mismo varias veces:
String nuevacadena = String.format("%1$#10s ; %1$-10s, %2$ ",micadena, "hola");

obtenemos " 123 ; 123 , hola"

En cuanto a número podemos controlar la precisión decimal con el .numerodecimales. En el siguiente queremos 2 decimales, así que usamos .2 y la f para indicar que queremos un float:
double numero = 123.23212;
nuevacadena = String.format("número %1$.2f fin",numero);

Obtenemos 123.23

Si queremos 0 a la izquierda, tenemos que tener en cuenta que si especificamos 10 dígitos, hay que descontarle los dígitos decimales (en nuestro ejemplo 2) y la coma.
nuevacadena = String.format("número->%1$010.2f fin",numero);

En este caso le decimos que queremos 10 digitos, 2 decimales, la coma y 7 dígitos que iran a la parte entera. El número resultante es 0000123,23.

Si no especificamos el nº de decimales los 0 se pondrán a la derecha:
nuevacadena = String.format("número->%1$010f fin",numero);

RESULTADO: 123,232120.

Hay muchas más opciones, incluyendo el formato de fechas. Para más información es mejor ver la documentación oficial.

Para obtener más información sobre el formato:
http://download-llnw.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax

No hay comentarios: