0Pricing
Java Academy · 课时

缩进与去除

控制无关空白字符

缩进与去除 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 声明文本块
  2. 缩进与去除
  3. 文本块中的转义
  4. 使用场景:JSON 与 SQL
← 返回 Java Academy