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

maa*_*asg 4 java string indentation

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

String indentSpace = new String(Arrays.fill(new char[indent], 0, indent-1, ' '));
Run Code Online (Sandbox Code Playgroud)

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

根据我的喜好,该表达式的字面翻译过于冗长:

char[] chars = new char[indent];
Arrays.fill(chars , ' ');
String indentSpace = new String(chars);
Run Code Online (Sandbox Code Playgroud)

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

private final String indentSpace="                                                     ";
...
String alternative = indentSpace.substring(0,indent % indentSpace.length());
Run Code Online (Sandbox Code Playgroud)

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

任何需要?

dog*_*ane 9

以下单行应该有效:

String indentSpace  = new String(new char[indent]).replace('\0', ' ');
Run Code Online (Sandbox Code Playgroud)


Joa*_*uer 5

如果确实行数是您的主要衡量指标,那么这是一种创建Stringn空格的紧凑方法:

String spaces = n == 0 ? "" : String.format("%" + n + "s", "");
Run Code Online (Sandbox Code Playgroud)

性能可能不是很好。