跳至主要內容

06. Java多行字符串

LiuSongLing大约 2 分钟javajavastring

在本文章中,我们将学习如何在Java中声明多行字符串。

文本块方式

public String textBlocks() {
    return """
        Get busy living
        or
        get busy dying.
        --Stephen King""";
}

JDK 15 版本及以上,通过三引号 """ 声明字符串的方式来使用文本块,这是迄今为止声明多行字符串的最便捷方式,我们不必处理线分隔符或缩进空间。

获取操作系统分隔符

不同的操作系统,定义的分隔符都不同,使用Java中的系统方法获取操作系统的分隔符

String newLine = System.getProperty("line.separator");

newLine 对象将在下文使用,后文不再重新获取。

字符串连接方式

字符串连接是一种简单的方法,可用于创建多行字符串:

版本一:

public String stringConcatenation() {
    return "Get busy living"
            .concat(newLine)
            .concat("or")
            .concat(newLine)
            .concat("get busy dying.")
            .concat(newLine)
            .concat("--Stephen King");
}

版本二:

public String stringConcatenation() {
    return "Get busy living"
            + newLine
            + "or"
            + newLine
            + "get busy dying."
            + newLine
            + "--Stephen King";
}

字符串join方式

Java 8 引入了 String.join,它使用分隔符和一些字符串作为参数,返回一个最终字符串,所有输入字符串通过分隔符连接在一起:

public String stringJoin() {
    return String.join(newLine,
                       "Get busy living",
                       "or",
                       "get busy dying.",
                       "--Stephen King");
}

字符串生成器方式

StringBuilder 是构建字符串的辅助类。StringBuilderJava 1.5 中引入,作为 StringBuffer 的替代品。

一般用于在循环中构建巨大的字符串:

public String stringBuilder() {
    return new StringBuilder()
            .append("Get busy living")
            .append(newLine)
            .append("or")
            .append(newLine)
            .append("get busy dying.")
            .append(newLine)
            .append("--Stephen King")
            .toString();
}

字符串写方式

StringWriter 也可以用来创建多行字符串。这里不再使用 newLine,使用 PrintWriterprintln 功能会自动添加新行:

public String stringWriter() {
    StringWriter stringWriter = new StringWriter();
    PrintWriter printWriter = new PrintWriter(stringWriter);
    printWriter.println("Get busy living");
    printWriter.println("or");
    printWriter.println("get busy dying.");
    printWriter.println("--Stephen King");
    return stringWriter.toString();
}

第三方库方式

引入第三方包,借助第三方封装好的字符串操作方法。这里谷歌的 Guava 库是个不错的选择:

public String guavaJoiner() {
    return Joiner.on(newLine).join(ImmutableList.of("Get busy living",
        "or",
        "get busy dying.",
        "--Stephen King"));
}