Как использовать String.format() в Java для репликации вкладки "\ t"?
Я печатаю данные по строкам и хочу, чтобы они были организованы как таблица.
Я изначально использовал firstName + ", " + lastName + "\t" + phoneNumber
.
Но для некоторых более крупных имен номер телефона выталкивается из выравнивания
Я пытаюсь использовать String.format() для достижения этого эффекта. Может ли кто-нибудь сказать мне синтаксис формата?
Я пробовал String.format("%s, %s, %20s", firstName, lastName, phoneNumber)
, но это не то, что я хочу. Я хочу, чтобы это выглядело так:
Джон, Смит 123456789
Боб, Мэдисон 123456789
Чарльз, Ричардс 123456789
Изменить:
Кажется, что эти ответы работают для System.out.println(). Но мне нужно, чтобы он работал на JTextArea. Я использую textArea.setText()
Разработал это. По умолчанию JTextArea не использует моноширинные шрифты. Я использовал setFont(), чтобы изменить это, и теперь он работает как шарм. Спасибо всем за решения.
Ответы
Ответ 1
рассмотрите использование отрицательного числа для вашего спецификатора длины: %-20s
. Например:
public static void main(String[] args) {
String[] firstNames = {"Pete", "Jon", "Fred"};
String[] lastNames = {"Klein", "Jones", "Flinstone"};
String phoneNumber = "555-123-4567";
for (int i = 0; i < firstNames.length; i++) {
String foo = String.format("%-20s %s", lastNames[i] + ", " +
firstNames[i], phoneNumber);
System.out.println(foo);
}
}
возвращает
Klein, Pete 555-123-4567
Jones, Jon 555-123-4567
Flinstone, Fred 555-123-4567
Ответ 2
Попробуйте поместить ширину во второй заполнитель с знаком -
для правильного заполнения как:
String.format("%s, %-20s %s", firstName, lastName, phoneNumber)
Это даст заданную ширину второму аргументу (фамилии) с правильным дополнением, и номер телефона начнется только после указанной строки ширины.
EDIT: Демо:
String firstName = "John";
String lastName = "Smith";
String phoneNumber = "1234456677";
System.out.println(String.format("%s, %-20s %s",firstName, lastName, phoneNumber));
печатает:
Джон Смит 1234456677
Ответ 3
Единственная альтернатива - это цикл списка имен, вычисление максимальной длины строки и добавление пробелов по мере необходимости после каждого имени, чтобы гарантировать, что все числа начинаются в одном столбце.
Использование вкладок имеет disavantage, что вы не можете знать a priori
, сколько пробелов эквивалентно вкладке, поскольку оно зависит от редактора.