Java обнаруживает URL - PullRequest
       21

Java обнаруживает URL

0 голосов
/ 04 ноября 2011

Я пытаюсь сделать это в 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];
}

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Используйте replaceAll() вместо replace().

РЕДАКТИРОВАТЬ:

С помощью регулярных выражений вы можете сделать это проще и чище, вместо использования разбиений:

msg.replaceAll("http://[^ ]+", "<a href=\"$0\">$0</a>");
0 голосов
/ 04 ноября 2011

Для дополнительных изображений, вы можете использовать две замены (с отрицательным просмотром для второй замены:

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>
...