2011-02-04 11 views
34

Java'da String.format() kullanıyorum. C içinde bulunan printf() denetim kanalını taklit etmeye çalışıyorum. Dizenin 20 karakter, 5, 2 alan bir alana yerleştirileceğini nasıl anlarım. 3 ondalık, 2 vb. ile birlikte, dizeler kendi alanlarında sağa hizalı olarak basılır.Dizeleri String.format() kullanarak nasıl sola hizalayabilirim?

Dizeleri nasıl sola hizalarım?

Burada, alanlarına EXECUTING ve CREATED arası sola hizalamak istediğim olası bir çıktı örneği gösterilmektedir.

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

* not: düşünün '-' printf gibi boş bir alan olarak

cevap

73

Aynı şekilde - formatında Bunun gibi

+22

("% - 10s", "test")' –

+0

Ve pozisyon belirtici, 'String.format (" kullanıyorsanız % 1 $ -10s "," test ")' – jff

3

bir - değiştirici kullanılır?

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

Çıktı:

String.format `deki gibi
$java F 
Process PID: 123 Status : EXECUTING 
Process PID: 34 Status : READY-SUSPENDED 
Process PID: 1231 Status : CREATED 
+5

Ancak, bu haklı bir iz bırakmadı. Bu '-' kullanımını gerektirir. – AHungerArtist

+0

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