Правильный отступ в выводе консоли Java/Kotlin

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

По сути, как я могу получить свой код для отступа на основе уровня отступа предыдущей строки. Если предыдущая строка имеет отступ \t и я делаю "\n\t", после этого я хотел бы, чтобы новая строка имела отступ относительно предыдущей строки. Значит, я ожидал быть похожим

String str = "original line (no indention)"
+ "\n"
+ "\t originally indented line"
+ "\n"
+ "\t the second indented line"

Выход

original line (no indention)
    originally indented line
    the second indented line

но я бы хотел, чтобы это было

original line (no indention)
    originally indented line
         the second indented line

Пожалуйста, имейте в виду, что в моем реальном коде каждый уровень отступа является результатом агрегации из другого файла, поэтому сложно просто сделать отступ дважды во второй строке. Мне нужно, чтобы можно было делать отступы просто на основе отступа предыдущей строки, чтобы мне не пришлось жестко кодировать уровни отступа.

2 ответа

Решение

Завершено, заменяя каждую новую строку \n с \n\t во время каждой итерации, и это, казалось, делало свое дело. Сумасшедший, как это было такое простое решение, что я посмотрел.

Я бы порекомендовал создать мини-класс, чтобы помочь вам в этом. Таким образом, вы можете отслеживать, сколько отступов уже сделано. Вы можете добавить следующий код внутри класса, который вы используете в данный момент:

public static class Indent{
    private static int numIndents = 0;
    public static String addIndent(String textToIndent){
        numIndents++;
        for(int i = 0; i < numIndents; i++){
            textToIndent = "\t" + textToIndent;
        }
        return textToIndent;
    }
}

Тогда вы можете сделать следующее:

String str = "original line (no indention)"
+ Indent.addIndent("originally indented line") 
+ Indent.addIndent("second indented line");

И таким образом, вы на самом деле никогда не должны печатать \t совсем.

Другие вопросы по тегам