Formato de salida Java para cadenas

Me preguntaba si alguien me puede mostrar cómo usar el método de formato para Java Strings. Por ejemplo, si quiero que el ancho de todos mis resultados sea el mismo

Por ejemplo, supongamos que siempre quiero que mi salida sea la misma

Name = Bob Age = 27 Occupation = Student Status = Single 

En este ejemplo, todos los resultados están formateados cuidadosamente uno debajo del otro; ¿Cómo puedo lograr esto con el método de formato?

EDITAR: Esta es una respuesta extremadamente primitiva, pero no puedo eliminarla porque fue aceptada. Ver las respuestas a continuación para una mejor solución, aunque

¿Por qué no generar una cadena de espacios en blanco de forma dinámica para insertar en la statement?

Entonces, si quieres que todos comiencen con el personaje número 50 …

 String key = "Name ="; String space = ""; for(int i; i<(50-key.length); i++) {space = space + " ";} String value = "Bob\n"; System.out.println(key+space+value); 

Pon todo eso en un bucle e inicializa / establece las variables "clave" y "valor" antes de cada iteración y estás dorado. También usaría la clase StringBuilder , que es más eficiente.

 System.out.println(String.format("%-20s= %s" , "label", "content" )); 
  • Donde% s es un marcador de posición para tu cadena.
  • El ‘-‘ hace que el resultado esté justificado a la izquierda.
  • 20 es el ancho de la primera cuerda

La salida se ve así:

 label = content 

Como referencia, recomiendo Javadoc en la syntax del formateador

Si quiere un mínimo de 4 caracteres, por ejemplo,

 System.out.println(String.format("%4d", 5)); // Results in " 5", minimum of 4 characters 

Pero realmente, debes aprender a comprender la documentación.

Para responder a su pregunta actualizada, puede hacer

 String[] lines = ("Name = Bob\n" + "Age = 27\n" + "Occupation = Student\n" + "Status = Single").split("\n"); for (String line : lines) { String[] parts = line.split(" = +"); System.out.printf("%-19s %s%n", parts[0] + " =", parts[1]); } 

huellas dactilares

 Name = Bob Age = 27 Occupation = Student Status = Single 
 @Override public String toString() { return String.format("%15s /n %15d /n %15s /n %15s",name,age,Occupation,status); } 

Para valores decimales, puede usar DecimalFormat

 import java.text.*; public class DecimalFormatDemo { static public void customFormat(String pattern, double value ) { DecimalFormat myFormatter = new DecimalFormat(pattern); String output = myFormatter.format(value); System.out.println(value + " " + pattern + " " + output); } static public void main(String[] args) { customFormat("###,###.###", 123456.789); customFormat("###.##", 123456.789); customFormat("000000.000", 123.78); customFormat("$###,###.###", 12345.67); } } 

y la salida será:

 123456.789 ###,###.### 123,456.789 123456.789 ###.## 123456.79 123.78 000000.000 000123.780 12345.67 $###,###.### $12,345.67 

Para más detalles mira aquí:

http://docs.oracle.com/javase/tutorial/java/data/numberformat.html

    Intereting Posts