java - 正确缩进 Java/Kotlin 控制台输出

标签 java string kotlin indentation console-output

我正在向控制台输出通过多个嵌套调用收集的大量信息。我希望能够以可读的方式在屏幕上打印信息,但是如果不对 \t 的数量进行硬编码,我似乎无法获得正确的缩进。

基本上,如何让我的代码根据前一行的缩进级别进行缩进。如果前一行用 \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

请记住,在我的实际代码中,每一级缩进都是来自不同文件的聚合结果,因此很难只知道在第二行缩进两次。我需要它能够简单地根据前一行的缩进进行缩进,这样我就不必对缩进级别进行硬编码。

最佳答案

我建议创建一个迷你类(class)来帮助您解决此问题。这样您就可以跟踪已经做了多少缩进。您可以在当前使用的类中添加以下代码:

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

关于java - 正确缩进 Java/Kotlin 控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281512/

相关文章:

java - RabbitMQ、docker、单队列、多个消费者

c++ - 'to_string' 未知覆盖说明符

c++ - 使用 strcmp 和字符串数组

android - lateinit RecyclerView是否需要在quickstart-android数据库应用中初始化?

android - 应用程序在 java.net.SocketTimeoutException : timeout (Kotlin, Retrofit 上崩溃

Java log4j 返回一些警告

Java - xml 列表或一个值

generics - Kotlin 中的方差/协方差泛型

java - 对象作为 java 8 中树状图中的键

Java RegEx - 如何防止一行特殊字符被另一个字符替换?