缩进与去除
控制无关空白字符
缩进与去除 是 CoddyKit 上的免费 Java Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。
偶然空白与必要空白
当您将文本块缩进以匹配代码时,这种缩进属于附带缩进,不应成为字符串的一部分。Java 会自动将其去除,只保留必要的空白。
结束分隔符设置边界
Java 会查看所有内容行和结束的 """,找出最左侧非空列的共同位置。该边界左侧的所有内容都会被移除。
public class Main {
public static void main(String[] args) {
String text = """
Hello
World
""";
System.out.println("[" + text + "]");
}
}将结束引号左移
如果结束的 """ 位于内容左侧更远的位置,每行开头多出的空格都会作为必要空白保留下来。
public class Main {
public static void main(String[] args) {
String text = """
Hello
World
""";
System.out.print(text);
}
}移除行尾空白
每行末尾的空格都会被自动去除。这样可以避免普通字符串中常见的、难以察觉的行尾空格错误。
public class Main {
public static void main(String[] args) {
String text = """
line one
line two
""";
for (String line : text.split("\n")) {
System.out.println("<" + line + ">");
}
}
}stripIndent 方法
String.stripIndent() 方法会在运行时对任意字符串应用相同的附带空白算法。文本块在底层正是使用它。
public class Main {
public static void main(String[] args) {
String raw = " a\n b\n c\n";
System.out.print(raw.stripIndent());
}
}控制内部缩进
相对于边界的缩进会被保留。这里第二行的缩进比第一行更多,这些额外缩进会保留在输出中。
public class Main {
public static void main(String[] args) {
String tree = """
root
child
grandchild
""";
System.out.print(tree);
}
}indent 方法
String.indent(int n) 会在每行开头添加 n 个空格,并确保末尾有换行符。嵌套文本块时,这个方法非常方便。
public class Main {
public static void main(String[] args) {
String text = """
a
b
""";
System.out.print(text.indent(4));
}
}strip 与 trim
使用 strip() 可以移除整个文本块开头和结尾的空白。与较旧的 trim() 不同,strip() 支持 Unicode。
public class Main {
public static void main(String[] args) {
String text = """
content
""";
System.out.println("[" + text.strip() + "]");
}
}结束引号单独占一行
如果结束的 """ 单独占一行,字符串会以换行符结尾。将它紧接在最后一个字符之后即可去掉这个换行符。
public class Main {
public static void main(String[] args) {
String withNewline = """
done
""";
String noNewline = """
done""";
System.out.println("A:" + withNewline.length());
System.out.println("B:" + noNewline.length());
}
}与代码对齐
为了提高可读性,您可以将整个文本块缩进到与周围代码对齐,而这些附带缩进会从值中消失。
public class Main {
static String menu() {
return """
Start
Options
Quit
""";
}
public static void main(String[] args) {
System.out.print(menu());
}
}验证边界
要调试空白去除过程,请用标记包围每一行。这样可以准确显示哪些开头空格被保留下来。
public class Main {
public static void main(String[] args) {
String block = """
x
y
""";
for (String line : block.split("\n")) {
System.out.println("|" + line + "|");
}
}
}快速检查
什么决定了文本块中有多少开头的(附带)空白会被去除?
回顾
您学习了缩进和空白去除:
- 附带缩进会被自动移除
- 结束的
"""的位置可以设置边界 - 行尾空白会被去除
stripIndent()、indent(n)和strip()可在运行时提供帮助- 结束引号的位置会控制最终的换行符
常见问题解答
「缩进与去除」课时是免费的吗?
是的 — 「缩进与去除」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。
「缩进与去除」这节课中我会学到什么?
控制无关空白字符 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Java Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「缩进与去除」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Java Academy 课中编写并运行代码吗?
能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。