Ruby是否有字符串语法可以插值但不需要转义字符?

3
在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

1
你尝试使用正斜杠代替反斜杠了吗?据我所知,Windows通常不关心你使用哪一个。 - mu is too short
我想我能猜到你想要的输出结果,但或许你可以在问题中包含它,以使其更加清晰明了? - Mark Byers
4
str11 = 'C:\some\windows\path%{ruby_var}\path' % {ruby_var: "foo"} 这是一行Python代码,它使用了字符串格式化操作符“%”来插入变量值。在这个例子中,使用字典来提供变量的值,字典的键是"ruby_var",对应的值为"foo"。该字符串包含反斜杠字符("")和百分号("%"),因此需要注意转义字符的使用。 - fl00r
3个回答

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

1
在理论上,也可以使用ERB。 puts ERB.new('C:\some\<%= ruby_var %>\other').result(binding) - d11wtq
这种语法有专门的术语吗?有什么我可以搜索以获取更多信息的关键词吗? - nexus
搜索了“ruby printf字符串语法”,找到了足够的信息。再次感谢steenslag和megas! - nexus

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

steenslag比你早一分钟回答了,所以我接受了他的答案。谢谢。 - nexus

1

我认为这是不可能的。

你应该考虑使用正斜杠代替反斜杠,这样看起来更美观;我相信在Windows中标准的Ruby库不会关心你使用什么类型的斜杠。

还有:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接