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

Mar*_*rov 12 ruby ruby-on-rails

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

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

s.gsub('/(?:http?:\/\/)?(?:www\.)?(.*)\/?$/i', '')
Run Code Online (Sandbox Code Playgroud)

这是我在Rails中所做的:

<%= auto_link(job.description) do |url| url.truncate(25).gsub('http://', '') end %>
Run Code Online (Sandbox Code Playgroud)

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

tex*_*uce 44

s = s.sub(/^https?\:\/\//, '').sub(/^www./,'')
Run Code Online (Sandbox Code Playgroud)

如果你不想使用s =,你应该使用sub!s代替所有subs.

您的代码存在以下问题:

  1. 问号始终跟在可选字符后面
  2. 始终替换子中的一个模式.您可以"链接"多个操作.
  3. 使用sub替代gsub^在正则表达式的开头,这样,只替换http://的开始,但是离开的人在中间.


Jos*_*osh 5

此方法应捕获所有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" 
Run Code Online (Sandbox Code Playgroud)