java - 在文本字符串中添加 URL 链接,Java

标签 java regex

我目前正在使用此功能在某些文本中添加指向网址的链接:

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) 如果“http”作为文本字符串的一部分出现(例如 abdhttpac),您将错误地提取/替换某些内容; (2) 几乎所有的 url 中都会有一个点 - 并且您搜索一个点作为 url 的结尾本质上是错误的:想想 http://www.domain.com - 您的代码只会提取“http://www”并替换它。

正则表达式可能是一个更好的主意。您可以使用以下类型的正则表达式:

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

并使用 $0 作为替换的实际 URL。

这应该捕获 http 和 https url。如果您想要其他的(例如 ftp、gopher 等),您可以相应地修改表达式。请注意,这只会捕获格式正确(url 编码)的 URL。许多浏览器可以理解带引号的 URL,但它不被视为正确的格式。

关于java - 在文本字符串中添加 URL 链接,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658465/

相关文章:

java - 如何从通用 JAXBElement<?延伸 >

java - Java在返回语句后执行方法吗

regex - 比较 Powershell 脚本中断前后多个子目录的大小

regex - 在 powershell 中编辑特定符号之间的文本

regex - 如何在 Rust 中获取重叠的正则表达式捕获?

java - HttpClient 多线程性能

java - 在学习编程的同时学习代码约定

java selenium 如何使用 if else

regex - 用 perl regex 替换一些变音符号

php - 如何使 preg_replace 仅替换匹配的*每个*字符中的第一个?