Java - String.format

 
Vista:
Imágen de perfil de Victor

String.format

Publicado por Victor (11 intervenciones) el 14/06/2015 19:30:03
Hola

Va a quedar claro que soy novato en Java, pero por más que lo he mirado en http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html no me ha quedado muy claro como funciona el siguiente método para delimitar a 10 caracteres la longitud de una cadena de texto:

public static String ajustaTexto(String cadena){
if(cadena.length()<10)
return (String.format("%1$-10s",cadena));
else
return (cadena.substring(0,10));
}

Lógicamente, esto es lo que más me despista: %1$-10s

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

String.format

Publicado por Juan (2 intervenciones) el 14/06/2015 23:43:59
Hola.
Victor.

Este formato que estas manejando, dice lo siguiente:
tu formato:
1
2
String.format("%1$-10s",cadena));
%1$-10s:
Aquí estas dándole al String (cadena) 10 espacios al final de ella.

Si en cambio ocupamos:
1
2
String Cadena = String.format("%1$#10s",cadena);
%1$#10s

Los espacios se colocarán al principio.

La función puede recibir varios argumentos o repetir el mismo varias veces:

1
String nuevacadena = String.format("%1$#10s ; %1$-10s, %2$ ",cadena, "Asia");

obtenemos " Desde un lugar muy lejano ; Desde un lugar muy lejano , Asia"

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:

1
2
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.


1
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:

1
nuevacadena = String.format("número->%1$010f fin",numero);


RESULTADO: 123,232120.


Espero que te sirva de referencia.
Saludos"""
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Victor

String.format

Publicado por Victor (11 intervenciones) el 15/06/2015 04:26:41
Impresionante la ayuda. Muchísimas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar