icon
icon

Javaでエスケープ処理を行う方法【初心者向け】

初心者向けにJavaでエスケープ処理を行う方法について解説しています。エスケープ文字は特定の処理を文字化したものです。これを使うことにより文字列内に改行などを入れることができます。よく使われるエスケープ文字の種類と実行結果を実際に書きながら学習しましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

この記事では、Javaでエスケープ処理を行う方法について解説します。

実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。

 

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

エスケープ処理を行う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

エスケープシーケンスとは

Javaでは「”(=ダブルクォーテーション)」で囲んだ内容を文字列とみなしますが、例えばこの「”」という記号そのものを出力したい場合どうすれば良いでしょうか?

単純に「System.out.println(“””)」と書いてもエラーになってしまいます。

これは、2番目の「”」が文字列の内容ではなく、終端を表す記号とみなされてしまうからです。

この問題を解消するために使用するのが「エスケープシーケンス」です。

上記の「”」の例であれば、「 System.out.println(“””);」とします。

この「"」というのがエスケープシーケンスです。

この2文字で「”」という記号を表しています。

Javaでは「”」以外にも、改行やtab等、そのままでは文字列として扱えないものがあり、それぞれに対して「エスケープシーケンス」が用意されています。
(例)改行→「n」、tab→「t」

 

エスケープ処理とは

プログラム内で使用できない文字を、代替の文字に置き換えることをエスケープ処理と言います。

前述のエスケープシーケンスを使用した文字の置換もエスケープ処理のひとつです。

エスケープシーケンスはJavaの制約に基づくものですが、仕様上の理由により独自の制限を設けたい場合もあります。

例えばJavaが出力したファイルを他のプログラムが読み込む様なシステムの場合、相手側プログラムの仕様に合わせてJava側が出力内容にエスケープ処理を施す必要があったりします。

 

[PR] Javaプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

下記のサンプルプログラムはエスケープシーケンスを使用して改行(n)とタブ(t)を出力します。

ひとつの文字列の中に改行とタブを連結して出力しています。

ソースコード

package escapetest;

public class EscapeSample {

  public static void main(String[] args) {
    EscapeSample escapeSample = new EscapeSample();
    escapeSample.print();
  }

  private void print() {
    StringBuilder sBuilder = new StringBuilder();
    String h1 = "大見出し";
    String h2 = "中見出し";
    String h3 = "小見出し";

    for (int i = 0; i < 2; i++) {
      sBuilder.append(h1);
      sBuilder.append("n");

      for (int j = 0; j < 2; j++) {
        for (int k = 0; k < 2; k++) {
          sBuilder.append("t");
        }
        sBuilder.append(h2);
        sBuilder.append("n");
        for (int l = 0; l < 3; l++) {
          for (int m = 0; m < 4; m++) {
            sBuilder.append("t");
          }
          sBuilder.append(h3);
          sBuilder.append("n");
        }
      }
    }
    System.out.println(sBuilder.toString());
  }
}

 

実行結果

大見出し
		中見出し
				小見出し
				小見出し
				小見出し
		中見出し
				小見出し
				小見出し
				小見出し
大見出し
		中見出し
				小見出し
				小見出し
				小見出し
		中見出し
				小見出し
				小見出し
				小見出し

 

監修してくれたメンター

堀田 悠貴

以前はSEとして某大学病院の電子カルテシステムの保守・開発に携わっていました。
基本的にJavaを使用してクライアント側のプログラム開発を担当していました。

基本業務はJavaでしたが案件次第で色々他のことにも手を出す必要があり、その都度苦労した記憶があります。
現在はその会社を退社して、こちらでのメンター業務のみ行っています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でもJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。