如何在Ruby中将斜杠(/)替换为“”

fhg3lkii  于 2023-02-15  发布在  Ruby
关注(0)|答案(3)|浏览(136)

到gsub /到“”ruby
我试过,

ss = "http://url.com/?code=\#{code}"

我正在从数据库中获取此URL,然后必须使用gsub \ to“”以在代码中传递动态值
如何将\gsub添加到“”
要求输出

ss = "http://url.com/?code=#{code}"
hyrbngr7

hyrbngr71#

你的问题实际上不是问题,当你用ruby写"http://url.com/?code=\#{code}"时,\#意味着ruby正在转义#字符,因为#是一个受保护的字符,所以你应该用反斜杠来转义它。
为了证明这一点,如果在控制台中用单引号写字符串(单引号将转义任何特殊字符(当然,单引号除外)):

>> '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"
vojdkbi0

vojdkbi02#

我相信您可能会问:“当插值模式被转义时,如何强制Ruby计算字符串插值?”在这种情况下,您可以这样做:

eval("\"#{ss}\"")

如果这就是你想要做的,我强烈建议你不要在数据库字段中存储包含字面字符#{ }的字符串,而是先使用%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(/\\/,'')
vdzxcuhz

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"

相关问题