Ruby Programming/Alternate quotes

← Strings | Here documents →

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