2011-02-04 22 views
34

Estoy usando String.format() en Java tratando de emular el canal de control printf() disponible en C. Entiendo cómo especificar que una cadena debe colocarse en un campo que toma 20 caracteres, 5, 2 .. con 3 decimales, 2, etc. Sin embargo, las cuerdas se imprimen a la derecha en su campo.¿Cómo puedo alinear a la izquierda las cadenas usando String.format()?

¿Cómo alineo a la izquierda las cadenas?

Aquí hay un ejemplo de una posible salida que me gustaría modificar para alinear a la izquierda EXECUTING y CREATED en sus campos.

Process PID: 25 Status: -----------  EXECUTING 
Process PID: 36 Status: READY-SUSPENDED 
Process PID: 4 Status: ----------------  CREATED 

* Nota: considere '-' como un espacio vacío

Respuesta

73

misma manera que con printf - usar un modificador - en el formato

+22

como en 'String.Format ("% - 10s", "prueba")' –

+0

Y si utiliza el especificador de posición, 'String.Format (" % 1 $ -10s "," test ")' – jff

3

gusta esta?

class F { 
    public static void main(String ... args) { 
    String [] status = { "EXECUTING", "READY-SUSPENDED", "CREATED" }; 
    int [] pids = {123, 34, 1231 }; 
    int i = 0; 
    for(String s : status) { 
     System.out.printf("Process PID: %5d Status : %s%n", pids[i++], s); 
    } 
    } 
} 

Salida:

$java F 
Process PID: 123 Status : EXECUTING 
Process PID: 34 Status : READY-SUSPENDED 
Process PID: 1231 Status : CREATED 
+5

Esto no se deja justificado, sin embargo. Eso requiere el uso de '-'. – AHungerArtist

+0

System.out.printf ("PID de proceso:% 5d Estado:% s \ n", pids [i ++], s); –

Cuestiones relacionadas