我目前正在使用此功能在某些文字中添加指向网址的链接:
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;
}
但也许用正则表达式替换会更好。有人可以建议并建议另一种方法吗?感谢
答案 0 :(得分:1)
有关您的代码的一些注意事项:(1)如果'http'作为文本字符串的一部分出现(例如abdhttpac),您将错误地提取/替换某些内容; (2)几乎所有url都会有一个点 - 你在网址的末尾搜索一个点本身就是错误的:想想http://www.domain.com - 你的代码只会提取'http:// www'和替换它。
正则表达式可能是一个更好的主意。您可以使用类型的正则表达式:
/\b(https?\:\/\/[\w\d:#@%/;$()~_?!+-=.,&]+)/i
并使用$0
作为替换的实际网址。
这应该抓住http和https网址。如果你想要其他的(例如ftp,gopher等),你可以相应地修改表达式。请注意,这只会捕获格式正确(url编码)的URL。许多浏览器会理解带有引号的网址,但不会将其视为正确的格式。