java 11 的 string.repeat(int) 是控制台表格对齐最轻量直观的方式,通过补足空格实现左右对齐,需校验宽度非负,封装为工具方法后可高效处理多列动态宽度表格。

Java 11 引入的 String.repeat(int) 方法,是实现控制台表格对齐最轻量、最直观的方式之一——它能直接生成指定长度的空白或填充字符,无需循环拼接或引入外部库。
用 repeat() 生成右/左对齐所需的空格
表格对齐的核心是“补足长度”。假设字段内容为 "abc",目标宽度为 10,则需补 7 个空格:
- 左对齐(内容靠左,空格补在右侧):
"abc" + " ".repeat(7)→"abc " - 右对齐(内容靠右,空格补在左侧):
" ".repeat(7) + "abc"→" abc"
注意:重复次数必须 ≥ 0;若传负数会抛 IllegalArgumentException,建议先校验目标宽度是否 ≥ 字符串长度。
封装成通用对齐工具方法
避免重复计算,可封装为静态工具方法:
(示例代码)public static String leftAlign(String s, int width) {
return s + " ".repeat(Math.max(0, width - s.length()));
}
<p>public static String rightAlign(String s, int width) {
return " ".repeat(Math.max(0, width - s.length())) + s;
}</p>
调用时直接写 leftAlign("ID", 8) 或 rightAlign("42", 8),输出统一占位,列自然对齐。
处理多列表格与动态宽度计算
真实表格需先遍历所有数据,确定每列最大宽度(含表头):
- 收集所有行中第 i 列字符串长度,取最大值作为该列宽度
- 对每行每列调用
leftAlign(value, colWidths[i]) - 列间用单空格或制表符分隔,增强可读性
例如三列表头 ["Name", "Age", "Score"],算出宽度分别为 [12, 5, 8],则格式化一行数据 ["Alice", "25", "95.5"] 就是:"Alice " + " " + "25 " + " " + "95.5 "
注意事项与边界情况
repeat() 虽简洁,但要注意:
- 不支持 Unicode 组合字符或全角空格的等宽渲染(控制台字体影响显示效果)
- 中文字符在多数终端中占 2 个英文字符宽度,若混排中英文,单纯按
length()计算会导致错位;此时需用第三方库(如 Apache Commons Lang 的StringUtils.length())估算视觉宽度 - 超长字符串不截断,如
"VeryLongName".repeat(1)本身已超宽,应提前s.substring(0, Math.min(s.length(), width))
纯英文/数字场景下,String.repeat() 是最简、最安全的对齐方案。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











