Что такое хороший способ обнаружения URL-адресов в тексте строки? - PullRequest
0 голосов
/ 25 апреля 2011

Привет всем, у меня есть текст строки, который может содержать URL-адреса (этот текст получен из текстовой области формы), и я хочу обнаружить эти URL-адреса и окружает их тегом, чтобы они были представлены на HTML-странице в виде ссылок, чтолучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 25 апреля 2011

Это сложная проблема, которую трудно решить, в основном из-за того, что в URL-адресах допустимо много символов, которые вы не часто видите в них.

http://www.codinghorror.com/blog/2008/10/the-problem-with-urls.html

Редактировать: Ссылка на daringfireball.net учитывает некоторые из этих факторов, но вы можете прочитать о компромиссах в сообщении в блоге.

1 голос
/ 25 апреля 2011

используйте регулярные выражения.

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

смотрите здесь для получения дополнительной информации http://daringfireball.net/2010/07/improved_regex_for_matching_urls

    public boolean isURL(String s){
    return s.matches(" (?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'\".,<>?«»\“\”\‘\’]))");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...