2011-02-04 24 views
34

Tôi đang sử dụng String.format() trong Java cố gắng mô phỏng kênh điều khiển printf() có sẵn trong C. Tôi hiểu cách chỉ định rằng một chuỗi nên được đặt trong trường có 20 ký tự, 5, 2 .. với 3 số thập phân, 2, v.v. Tuy nhiên, các chuỗi được in phải căn chỉnh trong trường của chúng.Làm cách nào để tôi căn chỉnh các chuỗi bằng String.format()?

Làm cách nào để căn trái các chuỗi?

Dưới đây là ví dụ về sản lượng có thể mà tôi muốn sửa đổi sang căn chỉnh EXECUTINGCREATED trong các trường của chúng.

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

* lưu ý: xem xét '-' như một không gian trống

Trả lời

73

Cùng một cách như với printf - sử dụng một modifier - theo định dạng

+22

như trong 'String.format ("% - 10s", "test")' –

+0

Và nếu bạn đang sử dụng sự xác định vị trí, 'String.format (" % 1 $ -10s "," test ")' – jff

3

Giống như này?

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

Output:

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

Đây không phải là trái hợp lý, mặc dù. Điều đó đòi hỏi phải sử dụng '-'. – AHungerArtist

+0

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

Các vấn đề liên quan