Извлечь и добавить ссылку на URL в строке - PullRequest
2 голосов
/ 13 мая 2011

У меня есть несколько строк, в которых есть ссылки.Например:

var str = "I really love this site: http://www.stackoverflow.com"

, и мне нужно добавить к нему тег ссылки, чтобы строка была:

I really love this site: <a href="http://www.stackoverflow.com">http://www.stackoverflow.com</a>

Ответы [ 3 ]

3 голосов
/ 13 мая 2011

Одной из возможностей было бы использование URI-класса , чтобы позволить ему выполнить анализ. Что-то вроде этого:

require 'uri'

str = "I really love this site: http://www.stackoverflow.com"
url = str.slice(URI.regexp(['http']))
puts str.gsub( url, '<a href="' + url + '">' + url + '</a>' )
1 голос
/ 01 июня 2015

Вы можете использовать URI.extract для этого:

str = "I really love this site: http://www.stackoverflow.com and also this one: http://www.google.com"

URI.extract(str, ['http', 'https']).each do |uri|
  str = str.gsub( uri, "<a href=\"#{uri}\">#{uri}</a>" )
end

str

Выше также соответствует несколько URL в одной строке.

0 голосов
/ 27 марта 2019

Вот, пожалуйста, рабочий код :) удаляет префикс http / s в отображаемой ссылке также

обратите внимание, что вы должны выполнить регулярное выражение для uri + "", чтобы он правильно перехватывал ссылки ... и тогда вам нужнодобавить пробел в начале, чтобы перехватить ссылки в конце, у которых нет завершающего пробела ...

thisString = yourString+" " # add space to catch link at end
URI.extract(thisString, ['http', 'https']).each do |uri|
  linkURL = uri
  if(uri[0..6] == "http://")
    linkURL = uri[7..-1]
  elsif(uri[0..7] == "https://")
    linkURL = uri[8..-1]
  end
  thisString = thisString.gsub( uri+" ", "<a href=\"#{uri.to_s}\">#{linkURL.to_s}</a> " )
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...