2011-02-04 12 views
34

Sto usando String.format() in Java cercando di emulare il canale di controllo printf() disponibile in C. Capisco come specificare che una stringa deve essere collocata in un campo che richiede 20 caratteri, 5, 2 .. con 3 decimali, 2, ecc. Tuttavia, le stringhe sono stampate allineate a destra nel loro campo.Come posso allineare le stringhe di sinistra usando String.format()?

Come allineare le stringhe a sinistra?

Ecco un esempio di un'uscita possibile che desidero modificare in left-align EXECUTING e CREATED nei rispettivi campi.

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

* Nota: prendere in considerazione '-' come uno spazio vuoto

risposta

73

stesso modo con printf - utilizzare un modificatore - nel formato

+22

come in 'String.Format ("% - 10s", "test")' –

+0

E se si sta utilizzando l'identificatore di posizione, 'String.Format (" % 1 $ -10s "," test ")' – jff

3

Ti piace?

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); 
    } 
    } 
} 

uscita:

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

Questo non è giustificato a sinistra, però. Ciò richiede l'uso del '-'. – AHungerArtist

+0

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

Problemi correlati