Ruby中是否有任何字符串语法允许插值但没有转义字符?

时间:2012-06-01 20:23:54

标签: ruby

Ruby中是否有任何单行字符串文字语法允许字符串插值但不将反斜杠解释为转义字符?

即,

ruby_var = "foo"

我希望能够键入等效的C:\some\windows\path\#{ruby_var}\path,从而导致字符串C:\some\windows\path\foo\path,而不必转义反斜杠或使用多行heredoc。

puts "C:\some\windows\path\#{ruby_var}\path"
puts "C:\some\windows\path\path_#{ruby_var}\path"
=> C: omewindowspath#{ruby_var}path
=> C: omewindowspathpath_foopath

puts 'C:\some\windows\path\#{ruby_var}\path'
puts 'C:\some\windows\path\path_#{ruby_var}\path'
=> C:\some\windows\path\#{ruby_var}\path
=> C:\some\windows\path\path_#{ruby_var}\path

puts %{C:\some\windows\path\#{ruby_var}\path}
puts %{C:\some\windows\path\path_#{ruby_var}\path}
=> C: omewindowspath#{ruby_var}path
=> C: omewindowspathpath_foopath

puts %q{C:\some\windows\path\#{ruby_var}\path}
puts %q{C:\some\windows\path\path_#{ruby_var}\path}
=> C:\some\windows\path\#{ruby_var}\path
=> C:\some\windows\path\path_#{ruby_var}\path

3 个答案:

答案 0 :(得分:8)

ruby_var = "hello"
puts 'C:\some\windows\path\%s\path' % ruby_var
#=>C:\some\windows\path\hello\path

答案 1 :(得分:4)

'C:\some\windows\path\%s\path' % ruby_var
#=> 'C:\some\windows\path\foo\path'

答案 2 :(得分:1)

我认为不可能。

你应该考虑使用正斜杠来使它看起来更漂亮;我相信Windows中的标准ruby库不关心你使用什么样的斜杠。

还有:

File.join('C:', 'path', ruby_var)