Thursday, October 16, 2008

(8)文本的任意分隔符

我们在处理文本中的引号('或者")比较麻烦,如前所述我们使用了\ 操作,Ruby还提供了一个通用的解决方案,使用%q,%Q的方式,用%q和%Q加上分解符号<>,{},[],(),--或者||,那么你可以在其中输入任意内容而不必担心引号的问题,关键的一点是这些符号必须成对出现,你甚至可以使用-- \\
%q用于表示单引号的文本。
%Q用于表示双引号的文本。
而且q和Q也是可以省略的你可以直接用%

%q(Don't worry about escaping ' characters!)
%Q|"How are you?", he said|
%-This string literal ends with a newline\n- # 这里的Q被省略了

如果你的字符串中包含分界符号,你可以使用\来标明它们:
%q_This string literal contains \_underscores\__
%Q!Just use a _different_ delimiter\!!

如果字符串中存在成队的分界符号,他们会直接被输出,但是如果只有一个你就需要用\进行转义:
<

Created with colorer-take5 library. Type 'ruby'

# XML格式使用了成对的括号:
%<<book><title>Ruby in a Nutshell</title></book>> # 这可以正常运行
# 计算表达式使用{}:
%((1+(2*3)) = #{(1+(2*3))}) # 这也没问题
%(A mismatched paren \( must be escaped) # 其中的第二个(需要被转义

No comments: