我正在尝试在java中创建它,以便如果我键入包含链接的消息,它会自动使用html对其进行格式化,以便可以在网页上单击:P
但是,我编写的代码只将我的消息中的第一个“链接”转换为链接,而不是其他链接。
有人可以帮我吗?我没有想法......
我的代码
// URL and Image handling
if (msg.contains("http://")) {
// If url is an image, embed it
if (msg.contains(".jpg") || msg.contains(".png") || msg.contains(".gif")) {
msg = msg.replace(linkz(msg, true), "<img src='" + linkz(msg, true) + "' class='embedded-image' />");
}
// Send link as link in <a> tag
msg = msg.replace(linkz(msg, true), "<a href='" + linkz(msg, true) + "' class='msg-link' target='_blank' title='" + linkz(msg, false) + "'>" + linkz(msg, false) + "</a>");
}
// Check string for links and return the link
public static String linkz(String msg, boolean http) {
String[] args = msg.split("http://");
String[] arg = args[1].split(" ");
if (http == true) {
return "http://" + arg[0];
}
return arg[0];
}
答案 0 :(得分:1)
使用replaceAll()
代替replace()
。
编辑:
你可以用这样的正则表达式更简单,更清晰,而不是使用拆分:
msg.replaceAll("http://[^ ]+", "<a href=\"$0\">$0</a>");
答案 1 :(得分:0)
对于其他图像,您可以使用两次替换(第二次替换使用负面后视:
String msg =
"this is an example https://test.com/img.jpg " +
"for http://www.test.com/ and yet more " +
"http://test/test/1/2/3.img.gif test and more " +
"https://www.test.com/index.html";
// replace images with img tag
msg = msg.replaceAll(
"https?://[^ ]+\\.(gif|jpg|png)",
"<img src=\"$0\" class=\"embedded-image\" />");
msg = msg.replaceAll("(?<!img src=\")https?://([^ ]+)",
"<a href=\"$0\" class=\"msg-link\" target=\"_blank\" title=\"$1\">$1</a>");
System.out.println(msg);
给你:
this is an example <img src="https://test.com/img.jpg" class="embedded-image" />
for <a href="http://www.test.com/" class="msg-link" target="_blank"
title="www.test.com/">www.test.com/</a> and yet more
<img src="http://test/test/1/2/3.img.gif" class="embedded-image" />
test and more <a href="https://www.test.com/index.html" class="msg-link"
target="_blank" title="www.test.com/index.html">www.test.com/index.html</a>