在IT技术中,使用""
和''
的时间有所不同吗?
我一般都使用单引号因为打起来更方便,但是我不确定是否应该这样做。
例如:get 'user/new'
和 get "user/new"
在IT技术中,使用""
和''
的时间有所不同吗?
我一般都使用单引号因为打起来更方便,但是我不确定是否应该这样做。
例如:get 'user/new'
和 get "user/new"
" "
允许您进行字符串插值,例如:
world_type = 'Mars'
"Hello #{world_type}"
除了插值之外,另一个区别是在单引号中无法使用“转义序列”
puts 'a\nb' # just print a\nb
puts "a\nb" # print a, then b at newline
'don\'t'
。 - Sparhawkputs '\\'
。它只会打印一个反斜线。在这里查看:http://stackoverflow.com/questions/25499046/is-it-possible-to-escape-character-within-single-quotes-in-ruby/25499079 - Hardik在Ruby中,单引号''
和双引号""
之间存在差异,涉及到哪些内容能够被评估为一个字符串。
首先,我想澄清一下,在字符串的文字形式中,不管是单引号还是双引号之间的任何内容都会被评估为字符串对象,这是Ruby String类的一个实例。
因此,'stackoverflow'
和"stackoverflow"
都将被评估为String类的实例,没有任何区别。
两种字符串文字形式(单引号或双引号)的本质区别在于双引号允许转义序列,而单引号则不行!
使用单引号创建的字符串文字形式不支持字符串内插和转义序列。
一个简洁的例子是:
"\n" # will be interpreted as a new line
相反
'\n' # will display the actual escape sequence to the user
使用单引号进行插值完全不起作用:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
正如大多数Ruby Linters建议的那样,在字符串中使用单引号字面量,并在插值/转义序列的情况下使用双引号。
回答您的问题,当您想要进行字符串插值时,必须使用""
:
a = 2
puts "#{a}"
最好使用单引号。
如果你想知道在性能方面是否有区别,可以在StackOverflow上查看这个问题的优秀讨论。
如果你还不熟悉RoR,我建议你选择一本不错的Ruby书籍来学习语言基础。它将帮助你理解你所做的事情(并且会让你不再认为Rails是魔法)。我个人推荐《Ruby基础教程》。
puts "\1" -> get special character
puts '\1' -> get \1
看起来星号在双引号中被转换为转义字符,但在单引号中不会。 顺便提一下,这会影响在正则表达式中使用它的输出 例如, str.gsub(/正则表达式/, '\1,\2')
当将 regex 模式作为字符串传递时,您需要使用单引号的另一个原因是:
这个 regex 模式将会生效,因为它被包含在单引号中:
"123 ABC".match('\d')
=> #<MatchData "1">
这个正则表达式模式会失败,因为它被放在双引号中(您必须进行双重转义才能使其起作用):
"123 ABC".match("\d")
=> nil