Как посчитать количество вхождений URL и гиперссылок в строке Ruby? - PullRequest
2 голосов
/ 18 июля 2010

Допустим, пользователь отправляет этот комментарий в блог:

@ SO - Отличное сообщество, но мы также видели несколько замечательных сообществ на Переполнение стека .В то же время Gmail от Google (http://gmail.com) является отличным примером сообщества с бесконечными границами. Мне просто интересно, действительно ли кто-нибудь пойдет в ногу с чем-то вроде http://www.twitter.com. Что делатьвы думаете?

Примечание: 3-й URL был фактически опубликован в виде простого текста, но SO преобразовал его в гиперссылку.

В любом случае, общий URL-адрес иколичество гиперссылок должно быть 3.

Итак, с точки зрения Ruby и / или Ruby on Rails: Как подсчитать количество вхождений URL-адресов и гиперссылок в строке Ruby?

Ответы [ 3 ]

1 голос
/ 18 июля 2010

Это довольно легко, хотя и довольно наивно:

string.count("http://")

Конечно, он не будет брать ссылки без ведущего "http://",, но это может быть разумным предположением.

0 голосов
/ 18 июля 2010

Использование регулярных выражений - хороший способ. Вот пример того, как это сделать:

yourpost.each do |yourword|
     if yourword =~ /^(((ht|f)tps?\:\/\/)|~/|/)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5})(:[\d]{1,5})?)/?(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?/
            puts %Q!We found #{$&} an URL in #{$1}!
    end
end

См. этот пост для дальнейшего обсуждения регулярных выражений, соответствующих URL.

0 голосов
/ 18 июля 2010

Самый простой способ - поискать шаблон «http», но на самом деле он может быть более сложным, потому что иногда URL не имеют «http://" в начале

string = "@SO - Great community, but we've also seen some great communities at <a href='http://blabla'>Stack Overflow</a>. At the same time Google's Gmail (http://gmail.com) is a great example of a community with endless bounds. I'm just wondering if anyone will really go toe-to-toe with something like http://www.twitter.com. What do you think?"
string.scan(/http/).size #=> 3
...