用于可变空间压痕的单线程

时间:2011-07-06 13:45:17

标签: java string indentation

在嵌套地图的“漂亮打印”功能中,我需要一个简单的缩进函数来为我的结构预先添加所需的空间。 我想要一个简单的单线,我找到的最好的是2线解决方案。 理想情况下,我想要这个:

String indentSpace = new String(Arrays.fill(new char[indent], 0, indent-1, ' '));

这不起作用,因为Arrays.fill不是'流利';它返回无效。

该表达式的字面翻译对我来说太冗长了:

char[] chars = new char[indent];
Arrays.fill(chars , ' ');
String indentSpace = new String(chars);

最后,我选择了缺乏光彩的2线解决方案:

private final String indentSpace="                                                     ";
...
String alternative = indentSpace.substring(0,indent % indentSpace.length());

这是次要的挑选,但我仍然对是否有更优雅的解决方案感到好奇。我认为,最后一个选项在性能方面可能是一个不错的选择。

任何需要?

3 个答案:

答案 0 :(得分:9)

以下单行应该有效:

String indentSpace  = new String(new char[indent]).replace('\0', ' ');

答案 1 :(得分:4)

如果确实行计数是您的主要衡量标准,那么这是一种创建String n空格的简洁方法:

String spaces = n == 0 ? "" : String.format("%" + n + "s", "");

表现可能不是那么好。

答案 2 :(得分:1)

如果您需要创建一个只包含空格的字符串,那么StringUtils.repeat将起作用:

String indentSpace = StringUtils.repeat(' ', indent);