Java多行字符串

评论 0 浏览 0 2019-07-04

1.概述

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

现在,Java 15已经出来了,我们可以使用新的本地功能,称为 "文本块"。

如果我们不能使用这个功能,我们也会审查其他方法。

2.文本块

我们可以通过用""(三个双引号)声明字符串来使用Text Blocks

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

这是迄今为止声明多行字符串的最方便的方法。事实上,我们不必处理行间分隔符或缩进空间,正如我们的专门文章所指出的那样。

该功能在Java 15中可用,但如果我们启用预览功能,则Java 13和14也可以使用。

在下面的章节中,我们将回顾其他的方法,如果我们使用以前的Java版本,或者文本块不适用的话,这些方法也是合适的。

3.获取行分隔符

每个操作系统都可以有自己的方式来定义和识别新的行。

在Java中,要获得操作系统的换行符是非常容易的。

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

我们将在下面的章节中使用这个newLine来创建多行字符串。

4.字符串连接

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

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

使用 "+"运算符是实现同样目的的另一种方法。

Java编译器以同样的方式翻译concat()和+运算符。

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

5. String Join

Java 8引入了String#join,它需要一个分隔符和一些字符串作为参数。

它返回一个最终的字符串,所有的输入字符串都用分隔符连接在一起。

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

6. StringBuilder

StringBuilder是一个用于构建String的辅助类。StringBuilder是在Java 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();
}

7. StringWriter

StringWriter是另一种方法,我们可以利用它来创建一个多行字符串。我们在这里不需要newLine,因为我们使用PrintWriter

println函数会自动添加新的行。

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();
}

8. Guava Joiner

仅仅为了这样一个简单的任务而使用一个外部库并没有什么意义。然而,如果该项目已经将该库用于其他目的,我们可以利用它。

例如,谷歌的Guava库就非常受欢迎。

Guava有一个Joiner,能够建立多行字符串。

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

9.从文件加载

Java完全按照文件的原样读取文件。这意味着,如果我们在文本文件中有一个多行字符串,当我们读取文件时就会有同样的字符串。在Java中,有很多方法可以从文件中读取

实际上,将长字符串与代码分开是一个很好的做法。

public String loadFromFile() throws IOException {
    return new String(Files.readAllBytes(Paths.get("src/main/resources/stephenking.txt")));
}

10.使用IDE功能

许多现代IDE支持多行复制/粘贴。Eclipse和IntelliJ IDEA就是这种IDE的例子。我们可以简单地复制我们的多行字符串,并在这些IDE中把它粘贴在两个双引号内。

显然,这个方法在运行时对字符串的创建不起作用,但这是一个快速而简单的方法,可以得到一个多行字符串。

11.结语

在这篇文章中,我们学习了几种在Java中建立多行字符串的方法。

好消息是,Java 15通过Text Blocks对多行字符串提供了本地支持。

所有其他被审查的方法都可以在Java 15或之前的任何版本中使用。

本文中所有方法的代码都可以在GitHub上找到,在GitHub上

最后更新2023-11-11
0 个评论
标签