【问题标题】:Remove "www", "http://" from string从字符串中删除“www”、“http://”
【发布时间】:2012-04-20 17:52:46
【问题描述】:

如何使用 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...”

【问题讨论】:

  • 我用我找到的一些正则表达式尝试了 gsub,但没有任何效果。例如:s.gsub('/(?:http?:\/\/)?(?:www\.)?(.*)\/?$/i', '')
  • 您要解决的更大问题是什么?是否要将“www.mydomain.com”重定向到“mydomain.com”?
  • @MartinPetrov 我已经编辑了您的问题以包含该问题,但请进一步编辑它以包含未按您预期工作的示例输入/输出。
  • 谢谢,我编辑了我的问题。抱歉不清楚。

标签: ruby-on-rails ruby


【解决方案1】:
s = s.sub(/^https?\:\/\//, '').sub(/^www./,'')

如果您不想使用s =,则应使用sub!s 而不是全部subs。

您的代码的问题是:

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

【讨论】:

  • 很棒的答案。这是一个升级:s.(/^https?\:\/\/(www.)?/,'') ... 和 .sub(/\/.*$/,'') 删除路径
  • 为什么是sub 而不是gsub
【解决方案2】:

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

【讨论】:

  • @JuliusMarkūnas strip_url("stackoverflow.com") 仍然返回预期的输出。你期望会有什么不同?
  • @JuliusMarkūnas 出乎意料的回报是什么?
  • 它不会从 url strip_url("http://stackoverflow.com") #=&gt; "http://stackoverflow.com" 的开头删除 http
【解决方案3】:
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" 

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 2013-05-16
    • 2011-09-14
    • 1970-01-01
    • 2014-01-18
    • 2016-10-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多