%Qと%qを使って文字列を作成する

文字列を作成する場合はダブルクオーテーションかシングルクオーテーションで囲って記述しますが。文字列の中にダブルクオーテーションやシングルクオーテーションが多数含まれる場合、一つ一つエスケープ処理するのは大変です。このような場合、 %Q または %q を使って文字列を作成することができます。ここでは Ruby で %Q や %q を使って文字列を作成する方法について解説します。

(2022 年 10 月 13 日公開 / 2022 年 10 月 24 日更新)

%Qと%qを使って文字列を作成する

文字列を作成する場合、通常はダブルクオーテーションまたはシングルクオーテーションで囲って記述します。

"文字列"
'文字列'

この方法とは別に文字列を作成する場合に %Q または %q で囲って記述することができます。書式は次の通りです。

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

%Q または %q で始まり、対になった区切り文字で文字の集合を囲うことで文字列を作成できます。 %Q で始まる場合がダブルクオーテーションで囲われたものに相当し、 %q で始まる場合がシングルクオーテーションで囲われた場合に相当しますのでバックスラッシュ記法を使用する場合は %Q を使用されてください。

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

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

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

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

%Q%q を使用して文字列を作成した場合は、文字列の中のダブルクオーテーションやシングルクオーテーションなどに対して \ 記号によるエスケープ処理が不要となります。

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

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

%Q!こんにちは\!伊藤さん!
サンプルコード

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

# encoding: UTF-8

puts(%Q[こんにちは"佐藤"さん\nお元気ですか])
puts(%q|こんにちは\nお元気ですか|)

下記のように実行して下さい。

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

-- --

Ruby で %Q や %q を使って文字列を作成する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。