推荐答案
在 Ruby 中,%q 和 %Q 是用于定义字符串的快捷方式。它们的主要区别在于字符串的插值和转义字符的处理。
%q:用于定义单引号字符串,不支持字符串插值和转义字符。%Q:用于定义双引号字符串,支持字符串插值和转义字符。
示例代码
# 使用 %q 定义字符串
str1 = %q{This is a single-quoted string. \n No interpolation or escape sequences.}
puts str1
# 使用 %Q 定义字符串
str2 = %Q{This is a double-quoted string. \n Supports interpolation and escape sequences.}
puts str2输出结果
This is a single-quoted string. \n No interpolation or escape sequences. This is a double-quoted string. Supports interpolation and escape sequences.
本题详细解读
%q 的用法
%q 用于定义单引号字符串,类似于使用单引号 '' 定义的字符串。它不支持字符串插值和转义字符。这意味着在 %q 定义的字符串中,\n 不会被解释为换行符,而是直接作为字符串的一部分输出。
%Q 的用法
%Q 用于定义双引号字符串,类似于使用双引号 "" 定义的字符串。它支持字符串插值和转义字符。这意味着在 %Q 定义的字符串中,\n 会被解释为换行符,并且可以在字符串中使用 #{} 进行变量插值。
使用场景
- 当需要定义一个不包含插值和转义字符的字符串时,可以使用
%q。 - 当需要定义一个包含插值和转义字符的字符串时,可以使用
%Q。
注意事项
%q和%Q后面可以跟任意非字母数字字符作为分隔符,常见的有{}、[]、()等。- 如果字符串中包含与分隔符相同的字符,需要转义或选择其他分隔符。
示例代码
# 使用不同的分隔符 str3 = %q[This is a single-quoted string with brackets as delimiters.] puts str3 str4 = %Q(This is a double-quoted string with parentheses as delimiters.) puts str4
输出结果
This is a single-quoted string with brackets as delimiters. This is a double-quoted string with parentheses as delimiters.