gpt4 book ai didi

ruby-on-rails - 如果不存在默认协议(protocol),如何在 URL 前面加上默认协议(protocol)?

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:08 24 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.2.9。我的模型类有一个 link 属性,在将相关对象存储到数据库之前,我想在该值(一个 URL,一种字符串)前面加上一个默认协议(protocol) if 它不存在(示例协议(protocol)可以是 http://https://ftp:// ftps:// 等;默认为 http://)。为了做到这一点,我正在考虑用一些正则表达式实现一个 Rails 回调,也许通过使用 URI Ruby library ,但我在如何实现方面遇到了麻烦。

有什么想法吗?我应该怎么做?

最佳答案

仅使用简单的正则表达式替换怎么样?

class String
def ensure_protocol
sub(%r[\A(?!http://)(?!https://)(?!ftp://)(?!ftps://)], "http://")
end
end

"http://foo".ensure_protocol # => "http://foo"
"https://foo".ensure_protocol # => "https://foo"
"ftp://foo".ensure_protocol # => "ftp://foo"
"ftps://foo".ensure_protocol # => "ftps://foo"
"foo".ensure_protocol # => "http://foo"

关于ruby-on-rails - 如果不存在默认协议(protocol),如何在 URL 前面加上默认协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com