繁体   English   中英

单行可变空间压痕

[英]One-liner for variable space indentation

在嵌套 map 的“漂亮打印”function 中,我需要一个简单的缩进 function 来为我的结构添加所需的空间。 我想要一个简单的单线,我发现最好的是 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());

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

有什么需要吗?

以下单行应该工作:

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

如果确实行数是您的主要度量,那么这是创建具有n空格的String的紧凑方法:

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

性能可能不是那么好。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM