Как обнаружить присутствие URL в строке

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

28
задан Joachim Sauer 5 October 2011 в 08:25
поделиться

5 ответов

Используйте java.net. URL для этого!!

Эй, почему не используют базовый класс в Java для этого "java.net. URL" и позволил ему проверить URL.

, В то время как следующий код нарушает золотой принцип "Исключение использования для исключительных условий только", не имеет смысла мне пытаться перестроить колесо для чего-то, что является veeery, зрелым на платформе Java.

Вот код:

import java.net.URL;
import java.net.MalformedURLException;

// Replaces URLs with html hrefs codes
public class URLInString {
    public static void main(String[] args) {
        String s = args[0];
        // separate input by spaces ( URLs don't have spaces )
        String [] parts = s.split("\\s+");

        // Attempt to convert each item into an URL.   
        for( String item : parts ) try {
            URL url = new URL(item);
            // If possible then replace with anchor...
            System.out.print("<a href=\"" + url + "\">"+ url + "</a> " );    
        } catch (MalformedURLException e) {
            // If there was an URL that was not it!...
            System.out.print( item + " " );
        }

        System.out.println();
    }
}

Используя следующий вход:

"Please go to http://stackoverflow.com and then mailto:oscarreyes@wordpress.com to download a file from    ftp://user:pass@someserver/someFile.txt"

Производит следующий вывод:

Please go to <a href="http://stackoverflow.com">http://stackoverflow.com</a> and then <a href="mailto:oscarreyes@wordpress.com">mailto:oscarreyes@wordpress.com</a> to download a file from    <a href="ftp://user:pass@someserver/someFile.txt">ftp://user:pass@someserver/someFile.txt</a>

, Конечно, различные протоколы могли быть обработаны по-разному. Можно получить всю информацию с методами get класса URL, например

 url.getProtocol();

Или остальная часть атрибутов: спецификация, порт, файл, запрос, касательно и т.д. и т.д.

http://java.sun.com/javase/6/docs/api/java/net/URL.html

Дескрипторы все протоколы (по крайней мере, все те платформа Java знает) и как дополнительное преимущество, если существует какой-либо URL, который Java в настоящее время не распознает и в конечном счете включен в класс URL (обновлением библиотеки), Вы получите его прозрачно!

58
ответ дан HamZa 28 November 2019 в 02:40
поделиться

В то время как это не конкретный Java, Jeff Atwood недавно отправил статью о ловушках, с которыми Вы могли бы столкнуться при попытке определить местоположение и соответствовать URL в произвольном тексте:

проблема С URL

Это дает хороший regex, который может использоваться наряду с отрывком кода, для которого необходимо использовать правильно (более или менее) дескриптор parens.

regex:

\(?\bhttp://[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]

paren очистка:

if (s.StartsWith("(") && s.EndsWith(")"))
{
    return s.Substring(1, s.Length - 2);
}
14
ответ дан Jesse Rusak 28 November 2019 в 02:40
поделиться

Ваш задают два отдельных вопроса.

  1. , Что лучший способ состоит в том, чтобы определить URL в Строках? См. этот поток
  2. , Как кодировать вышеупомянутое решение в Java? другие ответы, иллюстрирующие String.replaceAll использование, обратились к этому
0
ответ дан Community 28 November 2019 в 02:40
поделиться

Вы могли сделать что-то вроде этого (скорректируйте regex для удовлетворения потребностям):

String originalString = "Please go to http://www.stackoverflow.com";
String newString = originalString.replaceAll("http://.+?(com|net|org)/{0,1}", "<a href=\"$0\">$0</a>");
4
ответ дан erickson 28 November 2019 в 02:40
поделиться

Примитивный:

String msg = "Please go to http://stackoverflow.com";
String withURL = msg.replaceAll("(?:https?|ftps?)://[\\w/%.-]+", "<a href='$0'>$0</a>");
System.out.println(withURL);

Этому нужно улучшение, чтобы соответствовать надлежащим URL и особенно ПОЛУЧИТЬ параметры (? foo=bar&x=25)

0
ответ дан PhiLho 28 November 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: