Java在控制台中对齐字符串

示例

该方法PrintWriter.format(称为System.out.format)可以用于在控制台中打印对齐的字符串。该方法接收String带有格式信息和要格式化的一系列对象的:

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

String column1Format = "%-3s";    // 至少3个字符,左对齐
String column2Format = "%-5.8s";  // 最少5个字符和最多8个字符,左对齐
String column3Format = "%6.6s";   // 固定大小6个字符,右对齐
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";  // 固定大小3个字符,左对齐
String column2Format = "%-8.8s";  // 固定大小8个字符,左对齐
String column3Format = "%6.6s";   // 固定大小6个字符,右对齐
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个字符并保持左对齐