Java複数行文字列

1. 概要

Javaにはネイティブの複数行文字列クラスがまだないという事実のため、複数行文字列を作成して利用するのは少し面倒です。
このチュートリアルでは、Javaで複数行の文字列を作成および使用するためのいくつかの方法を説明します。

2. 行区切り記号の取得

各オペレーティングシステムには、新しい行を定義および認識する独自の方法があります。 Javaでは、オペレーティングシステムの行区切り文字を取得するのは非常に簡単です。
String newLine = System.getProperty("line.separator");
次のセクションでこの_newLine_を使用して、複数行の文字列を作成します。

3. 文字列連結

文字列の連結は、複数行の文字列を作成するために使用できる簡単なネイティブメソッドです。
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";
}

4. 文字列結合

Java 8でhttps://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-[_String#join_が導入されました]、区切り文字といくつかの文字列を引数として取ります。 すべての入力文字列が区切り文字で結合された最終的な文字列を返します。
public String stringJoin() {
    return String.join(newLine,
                       "Get busy living",
                       "or",
                       "get busy dying.",
                       "--Stephen King");
}

5. 文字列ビルダー

_StringBuilder_は、__ String__sを構築するためのヘルパークラスです。 link:/java-string-builder-string-buffer[_StringBuilder_]は、_StringBuffer_の代わりとしてJava 1.5で導入されました。 ループで巨大な文字列を作成するのに適しています。
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();
}

6. ストリングライター

_StringWriter_は、複数行の文字列を作成するために使用できる別のメソッドです。 _PrintWriter_を使用しているため、ここで_newLine_は必要ありません。 _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();
}

7. グアバジョイナー

このような単純なタスクのためだけに外部ライブラリを使用することはあまり意味がありませんが、プロジェクトがすでにライブラリを他の目的に使用している場合、それを利用できます。 たとえば、GoogleのGuavaライブラリは非常に人気があります。 link:/guava-joiner-and-splitter-tutorial [グアバには_Joiner_クラスがあります]は複数行の文字列を作成できます。
public String guavaJoiner() {
    return Joiner.on(newLine).join(ImmutableList.of("Get busy living",
        "or",
        "get busy dying.",
        "--Stephen King"));
}

8. ファイルからの読み込み

Javaはファイルをそのままの状態で読み取ります。 これは、テキストファイルに複数行の文字列がある場合、ファイルを読み取るときに同じ文字列になることを意味します。 link:/java-read-file[Javaのファイルから読み取る]には多くの方法があります。
実際には、長い文字列をコードから分離することをお勧めします。
public String loadFromFile() throws IOException {
    return new String(Files.readAllBytes(Paths.get("src/main/resources/stephenking.txt")));
}

9. IDE機能の使用

最新のIDEの多くは、複数行のコピー/貼り付けをサポートしています。 EclipseおよびIntelliJ IDEAはそのようなIDEの例です。 複数行の文字列をコピーして、これらのIDEの2つの二重引用符の中に貼り付けるだけです。
明らかに、このメソッドは実行時の文字列作成には機能しませんが、複数行の文字列を取得するための迅速かつ簡単な方法です。

10. 結論

このチュートリアルでは、Javaで複数行の文字列を作成するいくつかの方法を学びました。
良いニュースは、Java 13がhttps://openjdk.java.net/jeps/355[Text Blocks]を介して複数行の文字列をネイティブにサポートすることです。 言うまでもなく、上記のすべてのメソッドはJava 13でも機能します。
この記事のすべてのメソッドのコードは、https://github.com/eugenp/tutorials/tree/master/java-strings-2 [Github上]で入手できます。