%Q、%qによる文字列の作成

広告

文字列の中にダブルクオーテーションやシングルクオーテーションが多数含まれる場合、一つ一つ「¥」記号でエスケープ処理するのは大変ですし文字列が分かりにくくなります。

このような場合に文字列の別の作成方法が用意されています。書式は次の通りです。

%Q{文字列}
%q{文字列}

「%Q」で始まり、対になった区切り文字で文字の集合を囲うことで文字列を作成できます。「%Q」で始まる場合がダブルクオーテーションで囲われたものに相当し、「%q」で始まる場合がシングルクオーテーションで囲われた場合に相当します。

区切り文字は「{}」の他に次のようなものが使用できます。

%Q{文字列}
%Q[文字列]
%Q(文字列)
%Q<文字列>

また上記以外にも英数字とスペースを除いた文字も使用できます。この場合は同じ文字を使って囲います。

%Q|文字列|
%Q!文字列!
%Q*文字列*

「%Q」や「%q」を使用した場合はダブルクオーテーションやシングルクオーテーションなどに対して「¥」記号によるエスケープ処理が不要となります。

%Q[こんにちは"伊藤"さん]

また同じ文字を使って文字を囲った場合には、使用した文字が文字列中に使用される場合は「¥」記号を使ってエスケープする必要があります。

%Q!こんにちは¥!伊藤さん!

サンプルプログラム

では簡単なプログラムで確認して見ます。

test3-1.rb

#! ruby -Ku
require "kconv"

print(Kconv.tosjis(%Q[こんにちは"佐藤"さん¥nお元気ですか]), "¥n")
print(Kconv.tosjis(%q|こんにちは¥nお元気ですか|), "¥n")

上記のプログラムを「test3-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。

%Q、%qによる文字列の作成

( Written by Tatsuo Ikura )