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

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

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

この記事では、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講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。