在控制台中对齐字符串

方法 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 个字符并保持对齐