在 Ruby 中,如何替换字符串中的问号字符?
在 Ruby 中,我有:
require 'uri'
foo = "et tu, brutus?"
bar = URI.encode(foo) # => "et%20tu,%20brutus?"
我试图让 bar 等于“et%20tu,%20brutus%3f”(“?”替换为“%3F”) 当我尝试添加以下内容时:
bar["?"] = "%3f"
“?” 匹配一切,我得到
=> "%3f"
我已经尝试过
bar["\?"]
bar['?']
bar["/[?]"]
bar["/[\?]"]
还有其他一些东西,但没有一个起作用。
In Ruby, I have:
require 'uri'
foo = "et tu, brutus?"
bar = URI.encode(foo) # => "et%20tu,%20brutus?"
I'm trying to get bar to equal "et%20tu,%20brutus%3f" ("?" replaced with "%3F") When I try to add this:
bar["?"] = "%3f"
the "?" matches everything, and I get
=> "%3f"
I've tried
bar["\?"]
bar['?']
bar["/[?]"]
bar["/[\?]"]
And a few other things, none of which work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
需要'cgi'
并调用CGI.escape
require 'cgi'
and callCGI.escape
现在在 Ruby 中只有一种好方法可以做到这一点:
但是如果你正在使用 URI 做一些事情,你真的应该使用
There is only one good way to do this right now in Ruby:
But if you're doing stuff with URIs you should really be using Addressable anyways.
这是一个示例 irb 会话:
但是, sub 只会替换第一个字符。 如果要替换字符串中的所有问号,请使用
gsub
方法,如下所示:Here's a sample irb session:
However, sub will only replace the first character. If you want to replace all the question marks in a string, use the
gsub
method like this:如果您知道接受哪些字符,则可以删除那些不匹配的字符。
If you know which characters you accept, you can remove those that don't match.
URI.escape
接受可选参数来告诉您要转义哪些字符。 它会覆盖默认值,因此您必须调用它两次。URI.escape
accepts the optional parameter to tell which characters you want to escape. It overrides defaults so you'll have to call it twice.