假設s
是包括插#{...}
的一些事件,如字符串:如何轉義包含插值的Ruby字符串,以便稍後「評估」它?
s = " Hello #{Foo.bar(baz) + "}"} \n \" \\ World"
什麼是逃避s
使這一最簡單的方法:
eval("\"#{s.some_escape_method}\"")
或等價
eval('"' + s.some_escape_method + '"')
將在不影響s
的情況下擴大插值s
的任何其他部分,如字符"
,\n
等?
:由於
s
在這個例子中,需要叫name
正確插值另一個字符串,讓我們定義第一? 'String#%'不會是一個更乾淨的解決方案嗎? –@ muistooshort你不能直接用'String#%'在字符串中放置代碼。 – sawa
這通常是件好事。使用'%'也意味着你沒有脆弱的局部變量引用隱藏在你的字符串中。無論如何,'''真的是什麼樣子?在內插完成之後它是否包含'#{...}'*,或者是否想延遲對'Foo.bar(bas)+'}''的評估? –