Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

プログラミングでは「”(ダブルクォーテーション)」のように特殊な意味を持つ記号を入力する際、エスケープ処理が様々な場面で必要となります。

本記事では、Javaでのプログラミングにおける特殊文字のエスケープ処理について、サンプルコードを掲載しながらご紹介していきます。

Javaでのエスケープ処理とは


Javaでは文字列を表す「””(ダブルクォーテーションマーク)」のように、特殊な記号といったものが存在します。

特殊な記号をそのまま文字として出力したい場合や改行・タブといった特殊文字を文字列のなかで利用したい場合にはエスケープ処理が必要となります。

エスケープシーケンス

エスケープ処理は、エスケープシーケンスと呼ばれる「\(バックスラッシュ)」と何らかの記号や文字で表現します。

バックスラッシュの後ろに特定の記号や文字がセットになることで、特殊文字と認識されエスケープ処理が実行されます。

エスケープシーケンスの定番

頻繁に利用されるエスケープシーケンスをいくつか確認しておきましょう。

エスケープシーケンスの定番
    • \n : 改行
    • \t : タブ
    • \’ : シングルクォーテーション
    • \” : ダブルクォーテーション
    • \\ : バックスラッシュ
    • \xxx : 8進数の文字コード
    • \uxxx : 16進数の文字コード

エスケープ処理をJavaのサンプルで確認しよう


ここまでで概要について解説してきましたので、実際に定番のエスケープシーケンスを使ってどのような処理が実行されるのか具体的に確認しておきましょう。

サンプル

  1. public class Main {
  2.  
  3. public static void main(String[] args) {
  4. System.out.println("改行の\nエスケープシーケンスです。");
  5. System.out.println("エスケープシーケンスではないためn改行されません。");
  6. System.out.println("タブの\tエスケープシーケンスです。");
  7. System.out.println("エスケープシーケンスではないためtタブが挿入されません。");
  8. System.out.println('\''); //シングルクォーテーションが表示されます。
  9. // System.out.println('''); この記述はエラーとなります。
  10. System.out.println("ダブルクォーテーションの\"エスケープシーケンスです。");
  11. // System.out.println("""); 文字列を意味するダブルクォーテーションとして認識されるため数が合わずエラーとなります。
  12. System.out.println("バックスラッシュの\\エスケープシーケンスです。");
  13. // System.out.println("\バックスラッシュ"); 無効なエスケープシーケンスとして認識されるためエラーとなります。
  14. System.out.println("エスケープシーケンス \061 \062 \063 \064 \065");
  15. System.out.println("エスケープシーケンスなし 061 062 063 064 065");
  16. System.out.println("エスケープシーケンス \u0031 \u0032 \u0033 \u0034 \u0035");
  17. System.out.println("エスケープシーケンスなし u0031 u0032 u0033 u0034 u0035");
  18. }
  19. }

実行結果

  1. 改行の
  2. エスケープシーケンスです。
  3. エスケープシーケンスではないためn改行されません。
  4. タブの エスケープシーケンスです。
  5. エスケープシーケンスではないためtタブが挿入されません。
  6. '
  7. ダブルクォーテーションの"エスケープシーケンスです。
  8. バックスラッシュの\エスケープシーケンスです。
  9. エスケープシーケンス 1 2 3 4 5
  10. エスケープシーケンスなし 061 062 063 064 065
  11. エスケープシーケンス 1 2 3 4 5
  12. エスケープシーケンスなし u0031 u0032 u0033 u0034 u0035

サンプルのようにエスケープシーケンスで記述すると、改行やタブといった特殊文字に変換されたり、ダブルクォーテーションのようにJavaでは文字列と認識される記号をそのまま出力出来るようにエスケープ処理が実行されています。

ポテパンダの一言メモ

9行目11行目13行目に関してはコメントアウトせずに実行しようとしても、Javaの構文に沿わないためコンパイルエラーとなります。

Javaの正規表現でエスケープ処理を実行


正規表現でもメタ文字を利用する際に、エスケープ処理が必要になります。

今回はサンプルとして「?(はてなマーク)」の正規表現でエスケープ処理を実施してみましょう。

サンプル

はてなマークは「直前の文字が0または1個であること」を表すメタ文字です。

  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3.  
  4. public class Main {
  5.  
  6. public static void main(String[] args) {
  7.  
  8. String regex1 = "あいう?えお";
  9. String regex2 = "あいう\\?えお";
  10. String str1 = "あいえお";
  11. String str2 = "あいう?えお";
  12.  
  13. Pattern pattern1 = Pattern.compile(regex1);
  14. Pattern pattern2 = Pattern.compile(regex2);
  15. Matcher matcher1 = pattern1.matcher(str1);
  16. Matcher matcher2 = pattern2.matcher(str1);
  17. Matcher matcher3 = pattern1.matcher(str2);
  18. Matcher matcher4 = pattern2.matcher(str2);
  19.  
  20. System.out.println(matcher1.matches());
  21. System.out.println(matcher2.matches());
  22. System.out.println(matcher3.matches());
  23. System.out.println(matcher4.matches());
  24.  
  25. }
  26. }

実行結果

  1. true
  2. false
  3. false
  4. true

出力結果の1行目は「あいう?えお」と「あいえお」がマッチするかを確認しており、「う」が省略された際に文字列が一致するため、「はてなマーク」の正規表現に一致し「true」が出力されています。

2行目は「あいう?えお」と「あいう?えお」がマッチするかを確認しているため一見一致しているように感じますが、上述しているように「はてなマーク」が正規表現として機能しているため実際には「false」が出力されます。

3行目と4行目に関しては「あいう\\?えお」つまり「あいう?えお」の文字列と一致するかをチェックしており、「str2」の変数に「あいう?えお」が設定されているため、4行目の出力結果が「true」という結果になりました。

ポテパンダの一言メモ

「\\?」とバックスラッシュを2つ記述しているのは「\」自体が特殊文字のため「\」をエスケープ処理する必要があるからです。

さいごに: エスケープ処理を理解してJavaの特殊文字を使いこなそう


本記事では、Javaで特殊文字を表現する際に利用するエスケープ処理の使い方についてご紹介してきました。

エスケープ処理は最初の内は分かりにくいかも知れませんが、頻繁に利用する表現は限られています。

今回ご紹介した定番のエスケープシーケンスや正規表現の基本を抑えておき、検索しながら使いこなせるよう学習を進めてみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。