Javaだけでなく、プログラミング全般(文字列型のないC言語などを除く)で、「文字列 複数行」と検索する機会は多いです。
複数の言語を日常的に扱っていると、なぜかよく忘れがちなのが複数行文字列です。
対して、エスケープシーケンスはおおむねほとんどの言語で同じ書き方なので忘れにくい書き方をします。
文字列操作でよく使う表現なので、2つともしっかり書き方をマスターしましょう。
Javaのエスケープシーケンス
まず、複数行文字列を扱う上で必要なのはエスケープシーケンスです。
Javaで使われる基本的なエスケープシーケンスを見てみましょう。
| 表記 | 機能 |
|---|---|
\" / ¥" | "(二重引用符) |
\' / ¥' | '(引用符) |
\\ / ¥¥ | \(バックスラッシュ) / ¥(円記号) |
\n / ¥n | 改行 |
\t / ¥t | タブ文字 |
\(バックスラッシュ)と¥(円記号)、どちらも記法としては同じ意味です。
¥は日本独自の表現で、かつWindowsで標準的な書き方となります。できる限り世界標準である\の利用を推奨します。
実際の利用例が下記です。
public class Main {
public static void main(String[] args) {
String s1 = "Hello World";
String s2 = "Hello\nWorld";
String s3 = "Hello\tWorld";
String s4 = "Hello \"World\"";
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
}
}出力結果は行かとなります。
Hello World
Hello
World
Hello World
Hello "World"改行によって複数行文字列を表現できるため、2 ~ 3行の短い複数行文字列であれば使う機会があります。
Javaの複数行文字列(テキストブロック)
続いて、テキストブロックを用いた複数行文字列を紹介します。
\nを使って大きな文字列を扱うと、1行が長くなってしまって可読性が落ちるため、比較的大きな文字列や、定型文として使いたい文字列テンプレートなどにはテキストブロックを使います。
早速、書き方を見てみましょう。
public class Main {
public static void main(String[] args) {
String s = """
Hello,
World!
""";
System.out.println(s);
}
}これの出力結果は以下です。
Hello,
World!このように、自動的に先頭のスペースが取り除かれ、改行が自動付与されていることがわかります。
もしスペースを入れたい場合は以下のようにします。
public class Main {
public static void main(String[] args) {
String s = """
株式会社◯◯
田中太郎様
いつもお世話になっております。
この度は、ご注文いただきありがとうございます。
""";
System.out.println(s);
}
}出力結果は以下です。
株式会社◯◯
田中太郎様
いつもお世話になっております。
この度は、ご注文いただきありがとうございます。スペースが、「田中太郎様」の前に入っていることが確認できます。これは、Javaが最も左側(先頭)にある位置を先端と認識してくれる仕様によるものです。
"""{文字列}"""の間には、自由に記述できますが、インデントを意識しておかないと予期せぬ結果になるため、気を付けて書きましょう。
よく使う記法は記憶しよう
特定の機能を持つ記法は普段使わないと忘れがちですが、できるだけ覚えておくと良いでしょう。
検索する手間を減らすこともそうですが、それ以上に「こういう書き方ができる」と体に染み込ませることで表現豊かになります。
文字列操作はどういったシステムを構築するにしても、常に必要な操作となるため、複数行文字列の扱い方はぜひ習得しておいてください。





