到gsub /到“”ruby我试过,
ss = "http://url.com/?code=\#{code}"
我正在从数据库中获取此URL,然后必须使用gsub \ to“”以在代码中传递动态值如何将\gsub添加到“”要求输出
ss = "http://url.com/?code=#{code}"
hyrbngr71#
你的问题实际上不是问题,当你用ruby写"http://url.com/?code=\#{code}"时,\#意味着ruby正在转义#字符,因为#是一个受保护的字符,所以你应该用反斜杠来转义它。为了证明这一点,如果在控制台中用单引号写字符串(单引号将转义任何特殊字符(当然,单引号除外)):
"http://url.com/?code=\#{code}"
\#
#
>> 'http://url.com/?code=#{code}' => "http://url.com/?code=\#{code}"
这可能有点晦涩,但是如果你想计算字符串中的参数代码,你可以这样做:
>> code = 'my_code' >> eval("\"http://url.com/?code=\#{code}\"") => "http://url.com/?code=my_code"
vojdkbi02#
我相信您可能会问:“当插值模式被转义时,如何强制Ruby计算字符串插值?”在这种情况下,您可以这样做:
eval("\"#{ss}\"")
如果这就是你想要做的,我强烈建议你不要在数据库字段中存储包含字面字符#{ }的字符串,而是先使用%s,然后使用sprintf将值存储到字段中:
#{ }
%s
sprintf
# Stored db value ss = "http://url.com/?code=%s" # Replace `%s` with value of `code` variable result = sprintf(ss, code)
但是,如果您只需要知道如何从字符串中删除\,则可以通过使用另一个\进行转义来表示String或Regexp文字中的\。
\
ss.gsub(/\\/,'')
vdzxcuhz3#
你也可以这样试试,对我的情况很好。
url = 'www.abc.com?user_id=#{user[:id]}' uri = URI.parse(url.gsub("=\#", "=")) uri.query = URI.encode_www_form({user_id: 12}) puts uri.to_s ==> "www.abc.com?user_id=12"
3条答案
按热度按时间hyrbngr71#
你的问题实际上不是问题,当你用ruby写
"http://url.com/?code=\#{code}"
时,\#
意味着ruby正在转义#
字符,因为#
是一个受保护的字符,所以你应该用反斜杠来转义它。为了证明这一点,如果在控制台中用单引号写字符串(单引号将转义任何特殊字符(当然,单引号除外)):
这可能有点晦涩,但是如果你想计算字符串中的参数代码,你可以这样做:
vojdkbi02#
我相信您可能会问:“当插值模式被转义时,如何强制Ruby计算字符串插值?”在这种情况下,您可以这样做:
如果这就是你想要做的,我强烈建议你不要在数据库字段中存储包含字面字符
#{ }
的字符串,而是先使用%s
,然后使用sprintf
将值存储到字段中:但是,如果您只需要知道如何从字符串中删除
\
,则可以通过使用另一个\
进行转义来表示String或Regexp文字中的\
。vdzxcuhz3#
你也可以这样试试,对我的情况很好。