Добавить ссылки на URL-адреса в текстовой строке, Java - PullRequest
0 голосов
/ 05 октября 2011

В настоящее время я использую эту функцию для добавления ссылок на URL в некотором тексте:

public static String makeLinksInText(String text) {
        String url, urltext = "";
        int urlstart, urlend;
        int i = 0;
        while(i < text.length() - 5) {
            if(text.substring(i, i + 4).toLowerCase().equals("http")) {
                urlstart = i;
                if(text.indexOf(" ", urlstart) > -1)
                    urlend = text.indexOf(" ", urlstart);
                else if(text.indexOf(".", urlstart) > -1)
                    urlend = text.indexOf(".", urlstart);
                else
                    urlend = text.length();
                url = text.substring(urlstart, urlend);
                urltext = text.substring(0, urlstart) + "<a href=\"" + url + "\" target=\"_blank\" style=\"font-size:10px;\">" + url + "</a>" + text.substring(urlend);
            }
            i++;
        }
        return urltext;
    }

Но, возможно, было бы лучше заменить с помощью регулярных выражений. Может кто-нибудь посоветовать и, возможно, предложить другой метод? Спасибо

1 Ответ

1 голос
/ 05 октября 2011

Несколько замечаний относительно вашего кода: (1) если 'http' появляется как часть текстовой строки (например, abdhttpac), вы извлечете / замените что-то неправильно;(2) почти все URL будут иметь точку в них - и ваш поиск точки в качестве конца URL изначально ошибочен: подумайте http://www.domain.com - ваш код будет только извлекать 'http://www' и заменять его.

Regex может быть лучшей идеей.Вы можете использовать регулярное выражение типа:

/\b(https?\:\/\/[\w\d:#@%/;$()~_?!+-=.,&]+)/i

и использовать $0 в качестве фактического URL для замены.

Это должно перехватить URL-адреса http и https.Если вам нужны другие (например, ftp, gopher и т. Д.), Вы можете соответствующим образом изменить выражение.Обратите внимание, что при этом будут отлавливаться только правильно отформатированные URL-адреса.Многие браузеры понимают URL-адреса с кавычками, однако это не считается правильным форматированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...