12

Rubyを使用して文字列から「www」、「http://」、「https://」を削除するにはどうすればよいですか?

私はこれを試しましたが、うまくいきませんでした:

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

Railsで私がやっていることは次のとおりです。

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

URL は切り捨てられますが、私の目標は、「www」や「http://」などのリンクの先頭を削除して、リンクが「google.com/somepage/d...」のように見えるようにすることです。 http://google.com/some...」

4

3 に答える 3

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

を使用したくない場合は、すべてのではなくsをs =使用する必要があります。sub!sub

コードの問題は次のとおりです。

  1. オプション文字の後は常に疑問符が続きます
  2. 常にサブの1つのパターンを置き換えます。複数の操作を「連鎖」させることができます。
  3. subRegexpの代わりにgsubandを使用^して、最初のを置き換えるだけhttp://で、途中に残します。
于 2012-04-20T18:30:13.000 に答える
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" 
于 2012-04-20T19:11:50.127 に答える
1
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" 
于 2015-11-13T10:05:56.547 に答える