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

发布于 2024-11-18 20:55:07 字数 707 浏览 1 评论 0原文

在嵌套映射的“漂亮打印”函数中,我需要一个简单的缩进函数来将所需的空间添加到我的结构中。 我想要一个简单的单行解决方案,我发现最好的是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哀由 2024-11-25 20:55:07

以下一行应该有效:

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

The following one-liner should work:

String indentSpace  = new String(new char[indent]).replace('\0', ' ');
你是年少的欢喜 2024-11-25 20:55:07

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

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

性能可能不是那么好。

If indeed line count is your primary measurement then this is a compact way to create a String with n spaces:

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

Performance is probably not so great.

洛阳烟雨空心柳 2024-11-25 20:55:07

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

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

If you need to create a string with just spaces in it then StringUtils.repeat will work:

String indentSpace = StringUtils.repeat(' ', indent);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文