プログラムとして特別な意味を持つ記号や制御コードをありのまま渡すには、エスケープ・シーケンス (Escape Sequence)を使います。
たとえば、Java では、
"(ダブルコーテーション)
で囲まれた範囲は文字列リテラルとして解釈されますが、ダブルコーテーション自身を文字列リテラルとして表現するには、
"\""
と表記します。
基本的には、渡したい文字の前に \ (バックスラッシュ)を書くだけです。
Java では、このほかにも、以下のようなエスケープ・シーケンスがあります。
|
| 意味
| 備考
|
| \b
| バックスペース(backspace)
| \u0008
|
| \t
| 水平タブ(horizontal tab)
| \u0009
|
| \n
| 改行(linefeed)
| \u000a
|
| \f
| 改ページ(form feed)
| \u000c
|
| \r
| 復帰(carriage return)
| \u000d
|
| \"
| ダブル・クオート(double quote)
| \u0022
|
| \'
| シングル・クオート(single quote)
| \u0027
|
| \\
| バックスラッシュ(backslash)
| \u005c
|
| \Octal
| 8進数による指定
| [例] \0105
|
| \uFFFF
| ユニコード(unicode)
| [例] \u00ff
|
まめ知識:正規表現エンジン「 java.util.regex 」でのエスケープ・シーケンスの混乱
JDK 1.4から採用された正規表現エンジン「java.util.regex」には、エスケープ済みの文字列が渡されます。
ところが、Java の言語仕様のもとで正規表現を表現する場合には、特に注意が必要なケースがあります。
たとえば、Javaのプログラム上で正規表現として、"(" (左括弧)を渡すには、
"\\("
として渡す必要があります。
正規表現にとって "(" (左括弧)は特別な意味の文字であるため、正規表現のルールでは、\ (ダブルコーテーション)でエスケープする必要があるのですが、
\ (ダブルコーテーション)単体では、Javaの言語仕様で次の文字をエスケープする。の意で、つまり、\マークはひとつエスケープして渡されるため、2つのダブルコーテーションが必要になるのです。
なんだかパズルみたいですね。
そのほかにも、紛らわしいことはありますが、基本的には、この応用でほとんどうまくいきます。
|