用于可变空间压痕的单行线
在嵌套映射的“漂亮打印”函数中,我需要一个简单的缩进函数来将所需的空间添加到我的结构中。 我想要一个简单的单行解决方案,我发现最好的是 2 行解决方案。 理想情况下,我想要这个:
String indentSpace = new String(Arrays.fill(new char[indent], 0, indent-1, ' '));
这不起作用,因为 Arrays.fill 不“流畅”;它返回 void。
这个表达的字面翻译对我来说太冗长了:
char[] chars = new char[indent];
Arrays.fill(chars , ' ');
String indentSpace = new String(chars);
最后,我选择了一个缺乏光泽的两行解决方案:
private final String indentSpace=" ";
...
String alternative = indentSpace.substring(0,indent % indentSpace.length());
这是一个小小的挑剔,但我仍然好奇是否有更优雅的解决方案。我认为最后一个选项在性能方面可能是一个不错的选择。
有什么需要吗?
In a "pretty print" function for a nested map, I need a simple indent function to prepend the needed space to my structure.
I wanted a simple one-liner and the best I found was a 2 line solution.
Ideally, I wanted this:
String indentSpace = new String(Arrays.fill(new char[indent], 0, indent-1, ' '));
That doesn't work because Arrays.fill is not 'fluent'; it returns void.
A literal translation of that expression is too verbose for my liking:
char[] chars = new char[indent];
Arrays.fill(chars , ' ');
String indentSpace = new String(chars);
Finally, I settled for a lack-lustre 2-line solution:
private final String indentSpace=" ";
...
String alternative = indentSpace.substring(0,indent % indentSpace.length());
This is minor nit-picking, but I remained curious on whether there's a more elegant solution. I recon that the last option might be a good choice performance-wise.
Any takes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以下一行应该有效:
The following one-liner should work:
如果行数确实是您的主要衡量标准,那么这是创建带有
n
空格的String
的紧凑方法:性能可能不是那么好。
If indeed line count is your primary measurement then this is a compact way to create a
String
withn
spaces:Performance is probably not so great.
如果您需要创建一个仅包含空格的字符串,则 StringUtils.repeat 将起作用:
If you need to create a string with just spaces in it then StringUtils.repeat will work: