Класс Java Formatter, есть ли простой способ автоматически дополнять столбцы пробелами? - PullRequest
2 голосов
/ 29 сентября 2011

Скажем, у вас есть некоторые табличные данные, в которых длина данных может варьироваться, есть ли в классе Formatter положение для автоматической настройки заполнения?

Итак, вместо этого (примечание, столбец A):

columnA    columnB     
1            34.34          
10            34.34
100            34.34          
1000            34.34

Вы получаете это (примечание столбец B):

columnA    columnB     
1            34.34          
10           34.34
100          34.34          
1000         34.34

До сих пор я пробовал это, которое просто включает пробелы между% 5s% 5s, но они статичны и не корректируются для получения желаемых результатов. У меня сложилось впечатление, что 5 в% 5s будут автоматически заполнять 5 пробелов

Formatter formatter = new Formatter();
formatter.format("%5s     %5s", columnAdata, columnBdata);

1 Ответ

7 голосов
/ 29 сентября 2011

Это определенно возможно. Насколько я знаю, это настроить минимальную ширину для данных в вашем первом столбце. Для этого вы хотите использовать атрибут width в сочетании с выровнением влево (оба документа описаны в в Javadoc ). Вот вам начало:

System.out.printf("%-10d %d%n", 1, 100);
System.out.printf("%-10d %d%n", 10, 100);
System.out.printf("%-10d %d%n", 100, 100);

Это печатает:

1          100
10         100
100        100

Формат %-10d %d%n можно объяснить следующим образом:

%-10d: first field

    %: start field
    -: left-justify
   10: output a minimum of 10 characters
    d: format as a decimal integer

%d: second field, using defaults for decimal integer
%n: newline
...