如何使用Ruby从字符串中删除“www”,“http://”,“https://”?
我尝试了这个,但它不起作用:
s.gsub('/(?:http?:\/\/)?(?:www\.)?(.*)\/?$/i', '')
这是我在Rails中所做的:
<%= auto_link(job.description) do |url| url.truncate(25).gsub('http://', '') end %>
网址被截断,但我的目标是删除链接的开头,例如“www”或“http://”,以便链接看起来像“google.com/somepage/d ...”,不喜欢“http://google.com/some ...”
答案 0 :(得分:43)
s = s.sub(/^https?\:\/\//, '').sub(/^www./,'')
如果您不想使用s =
,则应使用sub!
而不是所有sub
。
您的代码存在以下问题:
sub
代替gsub
和^
,因此它只会替换开头的http://
,但会将其留在中间。答案 1 :(得分:4)
此方法应捕获所有3种变体:
def strip_url(url)
url.sub!(/https\:\/\/www./, '') if url.include? "https://www."
url.sub!(/http\:\/\/www./, '') if url.include? "http://www."
url.sub!(/www./, '') if url.include? "www."
return url
end
strip_url("http://www.google.com")
=> "google.com"
strip_url("https://www.facebook.com")
=> "facebook.com"
strip_url("www.stackoverflow.com")
=> "stackoverflow.com"
答案 2 :(得分:0)
def strip_url(target_url)
target_url.gsub("http://", "")
.gsub("https://", "")
.gsub("www.", "")
end
strip_url("http://www.google.com")
=> "google.com"
strip_url("https://www.google.com")
=> "google.com"
strip_url("http://google.com")
=> "google.com"
strip_url("https://google.com")
=> "google.com"
strip_url("www.google.com")
=> "google.com"