Javaでの¥(エスケープシーケンス)の使い方紹介!|¥を正しく使いこなそう

- SE
- Javaでの¥(エスケープシーケンス)はどのように使用するのでしょうか。
- PM
- 改行やタブなどの特殊文字を表現したり、文字列内に改行やタブなどの特殊文字が入れられたりします。
Javaでの¥(エスケープシーケンス)の使い方
今回は、Javaでの¥(エスケープシーケンス)の使い方について説明します。エスケープシーケンスとは、改行やタブなどの特殊文字を表現するためのものです。エスケープシーケンスを利用することで、文字列内に改行やタブなどの特殊文字が入れられます。
また、正規表現パターンにおいても、特殊文字を扱う場合にはエスケープシーケンスが必要です。Javaでのエスケープシーケンスの使い方に興味のある方はぜひご覧ください。
基本的な使い方
Javaでのエスケープシーケンスの基本的な使い方を紹介します。Javaではダブルクォーテーション(””)で囲まれたものを文字列として扱います。
では、ダブルクォーテーション自体を文字列に含めたい場合はどうすればよいでしょうか。
実際のソースコードを見てみましょう。ここでは、「acb””abc」という文字列を出力したいケースを考えます。
1 2 |
String str = ""abc""abc""; System.out.println(str); |
この場合は、コンパイルエラーとなります。
ここでエスケープシーケンス(¥)の登場です。
エスケープシーケンスは特殊文字の前に記述します。
1 2 |
String str = ""abc\""abc""; System.out.println(str); |
実行結果は以下のようになります。
1 |
abc""abc |
文字列にダブルクォーテーションが含まれていることが分かります。
このように、Javaではエスケープシーケンスを利用すれば、文字列に特殊文字を含められます。
エスケープシーケンス一覧
Javaで利用可能なエスケープシーケンス一覧を以下に記載します。
1 2 3 4 5 6 7 8 9 10 |
¥b バックスペース ¥t タブ文字 ¥n ラインフィールド(改行) ¥r キャリッジリターン(復帰) ¥f フォームフィード(改ページ) ¥' シングルクォーテーション ¥"" ダブルクォーテーション ¥¥ エン文字 ¥ooo 8進数文字コード(例えば、¥101はA) ¥uhhhh 16進数文字コード(例えば、¥u0041はA) |
エスケープシーケンスのサンプル
Javaでのエスケープシーケンスを使ったサンプルを紹介します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public class Main { public static void main(String[] args) throws Exception { String str1 = ""abc\tdef""; String str2 = ""abc\r\ndef""; String str3 = ""abc\ndef""; String str4 = ""abc\'def""; String str5 = ""abc\""def""; String str6 = ""abc\\def""; String str7 = ""abc\101def""; // \101はA String str8 = ""abc\u0041def""; // \u0041はA System.out.println(str1); // abc def System.out.println(str2); // abc<改行>def System.out.println(str3); // abc<改行>def System.out.println(str4); // abc'def System.out.println(str5); // abc""def System.out.println(str6); // abc\def System.out.println(str7); // abcAdef System.out.println(str8); // abcAdef } } |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 |
abc def abc def abc def abc'def abc""def abc\def abcAdef abcAdef |
このように、Javaではエスケープシーケンス使って特殊文字を表現できます。
正規表現でのエスケープシーケンス
Javaの正規表現パターンにおいても、特殊文字を扱う場合にはエスケープシーケンスが必要です。
1 |
¥ * + . ? { } ( ) [ ] ^ $ - | |
これらの特殊文字を文字として扱う場合にはエスケープシーケンスが必要です。
また、上の章で紹介したエスケープシーケンスも利用可能です。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) throws Exception { String str1 = ""abc^def""; String regex1 = ""^d""; Pattern p1 = Pattern.compile(regex1); Matcher m1 = p1.matcher(str1); if (m1.find()){ System.out.println(""match!""); } else { System.out.println(""unmatch""); } } } |
実行結果は以下のようになります。
1 |
unmatch |
regex1は””^d””としています。
正規表現のパターンでは、ハット(^)は先頭文字を意味します。
この場合、先頭文字はdではないのでマッチしないという結果になります。
それでは、^という文字で正規表現にマッチさせるにはどうすればよいでしょうか。
ここでエスケープシーケンスが登場します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.regex.Pattern; import java.util.regex.Matcher; public class Main { public static void main(String[] args) throws Exception { String str1 = ""abc^def""; String regex1 = ""\\^d""; Pattern p1 = Pattern.compile(regex1); Matcher m1 = p1.matcher(str1); if (m1.find()){ System.out.println(""match!""); } else { System.out.println(""unmatch""); } } } |
実行結果は以下のようになります。
1 |
match! |
\は特殊文字なので、\に対するエスケープが必要です。
そのため、regex1 = “”\\^d””;と記述します。
このように、Javaの正規表現パターンにおいても、特殊文字を扱う場合にはエスケープシーケンスが必要です。
%のエスケープ
String.formatにて%をエスケープする方法を紹介します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 |
public class Main { public static void main(String[] args) throws Exception { String str1 = String.format(""%s%%"", ""勇気100""); System.out.println(str1); } } |
実行結果は以下のようになります。
1 |
勇気100% |
%%でエスケープすることで、文字列の後に%が付与されていることが分かります。
- SE
- Javaでのエスケープシーケンスは便利なのですね。
- PM
- エスケープシーケンスを使用して、改行やタブなどの特殊文字をソースコードに組み込んでみましょう。
¥を正しく使いこなそう
Javaでのエスケープシーケンスの使い方について説明しました。
エスケープシーケンスとは、改行やタブなどの特殊文字を表現するためのものです。
エスケープシーケンスを利用すると、文字列内に改行やタブなどの特殊文字を入れることが可能になります。
Javaの正規表現パターンにおいても、特殊文字を扱う場合にはエスケープシーケンスが必要です。
ぜひご自身でソースコードを書いて、理解を深めてください。