This commit is contained in:
Looly 2022-04-06 17:23:10 +08:00
parent 75ec4a5cf6
commit 6e3e5e9d16

View File

@ -41,7 +41,7 @@ public class ConsoleTable {
* @return ConsoleTable * @return ConsoleTable
* @since 5.4.5 * @since 5.4.5
*/ */
public static ConsoleTable create(){ public static ConsoleTable create() {
return new ConsoleTable(); return new ConsoleTable();
} }
@ -83,8 +83,8 @@ public class ConsoleTable {
private void fillColumns(List<String> l, String[] columns) { private void fillColumns(List<String> l, String[] columns) {
for (int i = 0; i < columns.length; i++) { for (int i = 0; i < columns.length; i++) {
String column = columns[i]; String column = columns[i];
column = Convert.toSBC(column); String column2 = Convert.toSBC(column);
l.add(column); l.add(column2);
int width = column.length(); int width = column.length();
if (width > columnCharNumber.get(i)) { if (width > columnCharNumber.get(i)) {
columnCharNumber.set(i, width); columnCharNumber.set(i, width);
@ -101,42 +101,52 @@ public class ConsoleTable {
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
fillBorder(sb); fillBorder(sb);
fillRow(sb, headerList); fillRows(sb, headerList);
fillBorder(sb); fillBorder(sb);
fillRow(sb, bodyList); fillRows(sb, bodyList);
fillBorder(sb); fillBorder(sb);
return sb.toString(); return sb.toString();
} }
/** /**
* 填充表头或者表体信息 * 填充表头或者表体信息多行
* *
* @param sb 内容 * @param sb 内容
* @param list 表头列表或者表体列表 * @param list 表头列表或者表体列表
*/ */
private void fillRow(StringBuilder sb, List<List<String>> list) { private void fillRows(StringBuilder sb, List<List<String>> list) {
for (List<String> row : list) { for (List<String> row : list) {
for (int i = 0; i < row.size(); i++) { sb.append(COLUMN_LINE);
if (i == 0) { fillRow(sb, row);
sb.append(COLUMN_LINE);
}
String value = row.get(i);
sb.append(SPACE);
sb.append(value);
sb.append(SPACE);
int length = value.length();
int maxLength = columnCharNumber.get(i);
if (maxLength > length) {
for (int j = 0; j < (maxLength - length); j++) {
sb.append(SPACE);
}
}
sb.append(COLUMN_LINE);
}
sb.append(LF); sb.append(LF);
} }
} }
/**
* 填充一行数据
*
* @param sb 内容
* @param row 一行数据
*/
private void fillRow(StringBuilder sb, List<String> row) {
final int size = row.size();
String value;
for (int i = 0;i < size; i++) {
value = row.get(i);
sb.append(SPACE);
sb.append(value);
sb.append(SPACE);
int length = value.length();
int maxLength = columnCharNumber.get(i);
if (maxLength > length) {
for (int j = 0; j < (maxLength - length); j++) {
sb.append(SPACE);
}
}
sb.append(COLUMN_LINE);
}
}
/** /**
* 拼装边框 * 拼装边框
* *
@ -157,17 +167,4 @@ public class ConsoleTable {
public void print() { public void print() {
Console.print(toString()); Console.print(toString());
} }
private String fixLength(String input){
int fixLength = 0;
final int length = input.length();
char c;
for (int i = 0; i < length; i++) {
c = input.charAt(i);
if (c < '\177') {
fixLength ++;
}
}
return input + StrUtil.repeat('#', fixLength);
}
} }