在控制檯中對齊字串

方法 PrintWriter.format (通過 System.out.format 呼叫)可用於在控制檯中列印對齊的字串。該方法接收帶有格式資訊的 String 和一系列要格式化的物件:

String rowsStrings[] = new String[] {"1", 
                                     "1234", 
                                     "1234567", 
                                     "123456789"};

String column1Format = "%-3s";    // min 3 characters, left aligned
String column2Format = "%-5.8s";  // min 5 and max 8 characters, left aligned
String column3Format = "%6.6s";   // fixed size 6 characters, right aligned
String formatInfo = column1Format + " " + column2Format + " " + column3Format;

for(int i = 0; i < rowsStrings.length; i++) {
    System.out.format(formatInfo, rowsStrings[i], rowsStrings[i], rowsStrings[i]);
    System.out.println();
}

輸出:

1   1          1
1234 1234    1234
1234567 1234567 123456
123456789 12345678 123456

使用固定大小的格式字串允許使用固定大小的列以類似於表的外觀列印字串:

String rowsStrings[] = new String[] {"1", 
                                     "1234", 
                                     "1234567", 
                                     "123456789"};

String column1Format = "%-3.3s";  // fixed size 3 characters, left aligned
String column2Format = "%-8.8s";  // fixed size 8 characters, left aligned
String column3Format = "%6.6s";   // fixed size 6 characters, right aligned
String formatInfo = column1Format + " " + column2Format + " " + column3Format;

for(int i = 0; i < rowsStrings.length; i++) {
    System.out.format(formatInfo, rowsStrings[i], rowsStrings[i], rowsStrings[i]);
    System.out.println();
}

輸出:

1   1             1
123 1234       1234
123 1234567  123456
123 12345678 123456

格式字串示例

  • %s:只是一個沒有格式化的字串
  • %5s:格式化至少 5 個字元的字串 ; 如果字串較短,則將填充為 5 個字元並對齊
  • %-5s:格式化至少 5 個字元的字串 ; 如果字串較短,則將其填充為 5 個字元並保持對齊
  • %5.10s:格式化字串,最少 5 個字元,最多 10 個字元; 如果字串短於 5,則將填充為 5 個字元並對齊; 如果字串長於 10,則將截斷為 10 個字元並對齊
  • %-5.5s:格式化固定大小為 5 個字元的字串 (最小值和最大值等於); 如果字串短於 5,則將其填充為 5 個字元並保持對齊; 如果字串長於 5,它將被截斷為 5 個字元並保持對齊