rubyやrailsを学習する中で「%」を使った表記とちらほら出会うのでいくつか整理してみました。
※ここれは計算式の「%」は入れてません。(割って余りを出すあれ)
%q! ! はシングルクオートと同じ意味
puts %q!He said, "Don't speak."! #=> He said, "Don't speak."
%Q! ! と %! ! はダブルクオートと同じ意味
区切り文字は ! 意外にも ? や カッコ( > や } ) 等、任意の記号を使える。
something = "Hello."
puts %Q!He said, "#{something}"! #=> He said, "Hello."
puts %!He said, "#{something}"! #=> He said, "Hello."
# ? を区切り文字に使う場合。
puts %q?He said, "Don't speak."? #=> He said, "Don't speak."
# { } を区切り文字に使う場合。
puts %q{He said, "Don't speak."} #=> He said, "Don't speak."
%w + 区切り文字で文字列を配列にする。(! は任意の記号に変えれる)
空白文字(スペースや改行)が連続した場合も1つの区切り文字として見なされる。
# !を区切り文字で使う。
%w!apple melon orange! #=> ["apple", "melon", "orange"]
# ()を区切り文字で使う。
%w(apple melon orange) #=> ["apple", "melon", "orange"]
# []区切り文字で使う。
%w[apple melon orange] #=> ["apple", "melon", "orange"]
# 空白文字(スペースや改行)が連続した場合も1つの区切り文字として見なされる。
%w(
apple
melon
orange
) #=> ["apple", "melon", "orange"]
%W だと式展開や改行文字( \n )、タブ文字 ( \t )も含めた配列が可能
prefix = 'This is'
%W(#{prefix}\ an\ apple samall\namelon orange)
#=> ["This is an apple", "samall\namelon", "orange"]
%s でシンボルを作成
# !を区切り文字で使う。
%s!ruby is fun! #=> :"ruby is fun"
# ()を区切り文字で使う。
%s(ruby is fun) #=> :"ruby is fun"
%i でシンボルの配列を作成。空白文字が要素の区切りとなる。
# ()を区切り文字にした場合。
%i(apple orange melon) #=> [:apple, :orange, :melon]
# []を区切り文字にした場合。
%i[apple orange melon] #=> [:apple, :orange, :melon]
改行文字や式展開をする場合は %I と大文字にする。
name = 'Alice'
%I(hello\ngood-bye #{name.upcase}) #=> [:"hello|ngood-bye", :ALICE]
【参考文献】
書籍:プロを目指す人のためのRuby入門