从字符串中删除“www”,“http://”

如何使用Ruby从字符串中删除“www”,“http://”,“https://”?

我尝试了这个,但它不起作用:

s.gsub('/(?:http?:\/\/)?(?:www\.)?(.*)\/?$/i', '') 

这是我在Rails中所做的:

  

url被截断,但我的目标是删除链接的开头,例如“www”或“http://”,以便链接看起来像“google.com/somepage/d …”,而不是“ HTTP://google.com/some ……”

 s = s.sub(/^https?\:\/\//, '').sub(/^www./,'') 

如果你不想使用s = ,你应该使用sub! 而不是所有的sub

您的代码存在以下问题:

  1. 问号始终跟在可选字符后面
  2. 始终替换子中的一个模式。 您可以“链接”多个操作。
  3. 在Regexp的开头使用sub而不是gsub^ ,所以它只在开头替换http://但是将它们留在中间。

此方法应捕获所有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" 
 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"