Однострочник для отступа в переменном пространстве - PullRequest
4 голосов
/ 06 июля 2011

В функции «симпатичной печати» для вложенной карты мне нужна простая функция отступа, чтобы добавить необходимое пространство к моей структуре.Я хотел простой однострочник, и лучшее, что я нашел, было решение с 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());

Это незначительная приманка, но мне было любопытно, есть ли более элегантное решение.Я полагаю, что последний вариант может быть хорошим выбором с точки зрения производительности.

Любые варианты?

Ответы [ 3 ]

9 голосов
/ 06 июля 2011

Должна работать следующая однострочная:

String indentSpace  = new String(new char[indent]).replace('\0', ' ');
4 голосов
/ 06 июля 2011

Если количество строк действительно является вашим основным измерением, то это компактный способ создания String с n пробелами:

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

Производительность, вероятно, не так уж велика.

1 голос
/ 28 марта 2012

Если вам нужно создать строку с пробелами в ней, то StringUtils.repeat будет работать:

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