Прежде всего: я не Java-разработчик, но я немного знаю об этом.Я знаю, что это не лучший способ решить вашу проблему, но вы поймете, что вам нужно.
Вместо многократного вызова метода добавления, используйте Formatter и просматривайте его так:
private static StringBuilder appendStrings(String pro, List<ProcConfig> list, StringBuilder sb) {
Formatter formatter = new Formatter(sb);
String template ="";
for (ProcConfig pc : list) {
if (pro.length() == 6)
template = "%-6s %d %3d %-15s %d %d %s %n";
else if (pro.length() > 35)
template = "%-53s %d %3d %-15s %d %d %s %n";
else
template = "%-35s %d %3d %-15s %d %d %s %n";
formatter.format(template, pro, pc.getNo(), pc.getId(), pc.getAddress(), pc.getPort(), pc.getNumPorts(), pc.getName());
}
formatter.close();
return sb;
}
Поскольку pro имеет разную длину, вы можете изменить шаблон на подходящий для каждого pro.
Примечание : не забудьте импортировать java.util.Formatter .
Вы можете использовать спецификаторы формата, чтобы указать способ форматирования данных.Вот список распространенных форматеров:
%S or %s: Specifies String
%X or %x: Specifies hexadecimal integer
%o: Specifies Octal integer
%d: Specifies Decimal integer
%c: Specifies character
%T or %t: Specifies Time and date
%n: Inserts newline character
%B or %b: Specifies Boolean
%A or %a: Specifies floating point hexadecimal
%f: Specifies Decimal floating point
Как я уже говорил в комментариях, тире означает, что первая строка выравнивается по левому краю, и каждая строка будет добавляться после числа символов, определенных в шаблоне, поэтому попробуйте найтиЛучший номер, который соответствует вашим потребностям.
Чтобы узнать больше о форматере, взгляните на здесь и здесь .