Ruby Programming/Alternate quotes
Ruby 提供了许多种表示字串括号的方法。
单引号的替用者
编辑举例而言,我们想用字串表达档案路径名称时,通常用单引号括起字串内容,如下所示:
puts 'c:\bus schedules\napolean\the portland bus schedule.txt'
用单引号括起字串内容时,不会转义其中的 \b
, \n
, 和 \t
字元,故得以直率地表达档案路径。但如果档案路径名称之中含有 '
时,我们就要写成 \'
,如下所示:
puts 'c:\napolean\'s bus schedules\tomorrow\'s bus schedule.txt'
当字串中含有许多转义字元时,将会降低程式的可读性。所幸在 Ruby 中有更好的方式可用。你可以用 %q
自定括号,以 %q
自定之括号将套用单引号括号规则。你可以指定任何字元为括号。底下示范自定括号的用法,每一行都会印出同样的文字 - "c:\napolean's documents\tomorrow's bus schedule.txt
" 。
puts %q!c:\napolean's documents\tomorrow's bus schedule.txt! puts %q/c:\napolean's documents\tomorrow's bus schedule.txt/ puts %q^c:\napolean's documents\tomorrow's bus schedule.txt^ puts %q(c:\napolean's documents\tomorrow's bus schedule.txt) puts %q{c:\napolean's documents\tomorrow's bus schedule.txt} puts %q<c:\napolean's documents\tomorrow's bus schedule.txt>
若你选择的自定括号也同样被用于字串文字,你仍然需要转义。如下例以 #
为自定括号,但字串文字中也有一个 # 字元,此时就要写成 \#
。
puts %q#c:\napolean's documents\tomorrow's \#9 bus schedule.txt#
当然我们用自定括号的意义在于避免这种情形,所以应尽量选用不会出现在字串文字中的字元做为自定括号。若你使用可成对的括弧字元为自定括号,你可用巢状括弧而不需转义。
puts %q(c:\napolean's documents\the (bus) schedule.txt) puts %q{c:\napolean's documents\the {bus} schedule.txt} puts %q<c:\napolean's documents\the <bus> schedule.txt>
双引号的替用者
编辑%Q
允许你自定套用双引号括号规则的括号符号,其用法如同 %q
。
print %Q^Say:\tHello world\n\tHello world\n^ print %Q(Say:\tHello world\n\tHello world\n)
你同样可以在其中嵌入 Ruby 算式窜写字串内容。
name = 'Charlie Brown' puts %Q!Say "Hello," #{name}.! puts %Q/What is "4 plus 5"? Answer: #{4+5}/