我不知道如何处理一条消息中的多个URL。这些网址可以各种格式传递
www.google.com
https://www.google.com
<a href = www.google.com>GOOGLE</a>
<a href = "https://www.google.com">GOOGLE</a>
我正在尝试使用模式和匹配器,但是find()
方法无法识别我是否已经替换了字符串的子字符串。你们能看看我的逻辑并给我一些建议吗?
谢谢
下面的代码:
String link = url;
if (!html.contains("@" + url) && !html.contains(url + "@")) {
if (!(link.contains("http:") || link.contains("https:"))) {
link = "https://" + url;
}
String href = "<a href=\"" + link.toLowerCase() + "\">";
String begin = href;
String end = "</a>";
Pattern pattern = Pattern.compile("<a href(\\s?)*=(\\s?)*\"(\\s?)*(.?)*www.(.)*\"[^>]*>.*</a>");
Matcher matcher = pattern.matcher(html);
if (!matcher.find()) {
html = html.replace(matcherUrl.group(), begin + link + end);
} else {
html = html.replace(matcherUrl.group(), link);
}
}
}
}
return html;
字符串html
是一条完整的消息。...例如
val html = "HTML-Http: <a href = \"https://www.google.com\">GOOGLE</a> \n
HTML-noHttp: <a href = \"www.google.com\">GOOGLE</a> \n
URL-http: https://www.google.com \n
URL-noHttp: www.google.com"