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}/