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:
de modo que genere la cadena "123 ".
Si usásemos la sentencia:
Los espacios se colocarán al principio, obtendremos " 123".
La función puede recibir varios argumentos o repetir el mismo varias veces:
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:
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.
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:
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
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
Comentarios