我想在某些 Ruby 中插入以下内容作为变量的值:
`~!@#$%^&*()_-+={}|[]\:";'<>?,./
用双引号将其引起来是行不通的,那么是否有一个很好的 escape_until_the_end 之类的东西可用?
不要使用多种方法 - 保持简单。
转义 #、反斜杠和双引号。
irb(main):001:0> foo = "`~!@\#$%^&*()_-+={}|[]\\:\";'<>?,./"
=> "`~!@\#$%^&*()_-+={}|[]\\:\";'<>?,./"
或者,如果您不想转义 #(双引号字符串中变量的替换字符),请改用单引号并转义:
irb(main):002:0> foo = '`~!@#$%^&*()_-+={}|[]\\:";\'<>?,./'
=> "`~!@\#$%^&*()_-+={}|[]\\:\";'<>?,./"
%q 对于许多不包含每个 ascii 标点符号的其他字符串来说非常有用。 :)
%q(text without parens)
%q{text without braces}
%Q[text without brackets with #{foo} substitution]
编辑:显然你也可以在 %q() 中成功地使用平衡括号,但我认为从维护的角度来看这有点危险,因为那里没有语义暗示你总是必须在字符串中平衡你的括号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)