Help us understand the problem. What is going on with this article?

Rubyで%記法(パーセント記法)を使う

More than 5 years have passed since last update.

Rubyの%記法まとめ。
以下の例では%の後に全て「()」記号を使っているが、他の記号でも代替可能。自分が好きなものを使って問題ない。

1. %、%Q

ダブルクオートで囲う場合と同等。
シングルクオートやダブルクオートのエスケープが不要になる。
後述の%q()と違い、変数・定数の展開もできる。

str = %(Programming language "Ruby")
puts str
# => Programming language "Ruby"

ruby = "Ruby"
str2 = %(Programming language "#{ruby}")
puts str2
# => Programming language "Ruby"

2. %q

シングルクオートで囲う場合と同等。
シングルクオートなので、変数や定数の展開はされない。

ruby = "Ruby"
str = %q(Programming language "#{ruby}")
puts str
# => Programming language "#{ruby}"

3. %w

配列を作る。配列の要素はスペース区切りで指定する。
式の展開はされない。

array = %w(one two three four)
p array
# => ["one", "two", "three", "four"]

4. %W

配列を作る。%w()と違い、式の展開がされる。

ruby = 'Ruby'
PYTHON = 'Python'

array = %W(#{ruby} #{PYTHON} PHP)
p array
# => ["Ruby", "Python", "PHP"]

5. %i

要素がシンボルの配列を作る。

array = %i(Ruby Python PHP)
p array
# => [:Ruby, :Python, :PHP]

6. %I

要素がシンボルの配列を作る。%i()と違い、式の展開がされる。

ruby = 'Ruby'
PYTHON = 'Python'

array = %I(#{ruby} #{PYTHON} PHP)
p array
# => [:Ruby, :Python, :PHP]

7. %x

コマンド出力を行う。バッククオートで囲った場合と同等。

res = %x(date) # dateコマンドの実行
puts res
# => Sat Aug 23 23:27:01 JST 2014

8. %s

シンボル。式の展開はされない。

sym = %s(Ruby)
p sym
# => :Ruby
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away