Java多行字符串
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上。