正确缩进 Java/Kotlin 控制台输出
Properly indent Java/Kotlin 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 来帮助您解决这个问题。这样您就可以跟踪已经制作了多少缩进。您可以在当前使用的 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
。
结束了,在每次迭代期间将每个新行 \n
替换为 \n\t
,这似乎可以解决问题。太疯狂了,我竟然看了这么简单的解决方案。
我正在向控制台输出大量信息,这些信息是通过多个嵌套调用收集的。我希望能够以可读的方式在屏幕上打印信息,但我似乎无法正确缩进,而不对 \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 来帮助您解决这个问题。这样您就可以跟踪已经制作了多少缩进。您可以在当前使用的 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
。
结束了,在每次迭代期间将每个新行 \n
替换为 \n\t
,这似乎可以解决问题。太疯狂了,我竟然看了这么简单的解决方案。