Подтвердить что ты не робот

Как разобрать URL-адрес из строки в Android?

Я хочу проанализировать URL-адрес из строки в android. Пример Строка

"This is a new message. The content of the message is in 'http://www.example.com/asd/abc' "

Я хочу проанализировать url http://www.example.com/asd/abc из String без использования метода подстроки.

4b9b3361

Ответ 1

Обновлено:

Вы можете использовать регулярное выражение с регулярным выражением Patterns.WEB_URL, чтобы найти все URL-адреса в тексте.


Оригинал:

Вы можете использовать Uri.parse(String uriString).

Ответ 2

Используйте это:

public static String[] extractLinks(String text) {
    List<String> links = new ArrayList<String>();
    Matcher m = Patterns.WEB_URL.matcher(text);
    while (m.find()) {
        String url = m.group();
        Log.d(TAG, "URL extracted: " + url);
        links.add(url);
    }

    return links.toArray(new String[links.size()]);
}

Ответ 3

Да, это возможно. Попробуйте использовать следующий пример кода

ArrayList retrieveLinks(String text) {
        ArrayList links = new ArrayList();

        String regex = "\\(?\\b(http://|www[.])[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(text);
        while(m.find()) {
        String urlStr = m.group();
        char[] stringArray1 = urlStr.toCharArray();

        if (urlStr.startsWith("(") && urlStr.endsWith(")"))
        {

            char[] stringArray = urlStr.toCharArray(); 

            char[] newArray = new char[stringArray.length-2];
            System.arraycopy(stringArray, 1, newArray, 0, stringArray.length-2);
            urlStr = new String(newArray);
            System.out.println("Finally Url ="+newArray.toString());

        }
        System.out.println("...Url..."+urlStr);
        links.add(urlStr);
        }
        return links;
        }

Спасибо Дипак

Ответ 4

Если вы разбираете ссылки для их стилизации, Linkify является изящным решением:

descriptionTextView.setText("This text contains a http://www.url.com")
Linkify.addLinks(descriptionTextView, Linkify.WEB_URLS);

Вы также можете изменить цвет по умолчанию для ссылки:

descriptionTextView.setLinkTextColor(ContextCompat.getColor(getContext(),
                R.color.colorSecondary));

Результат выглядит следующим образом:

введите описание изображения здесь

Ответ 5

Вы можете просто создать новый URL-адрес, передающий строку в качестве аргумента конструктору. Затем вы можете использовать различные методы класса URL для доступа к различным частям URL.

Хорошо, я вижу, что это не то, что вы имели в виду. Возможно, вы можете использовать регулярное выражение, но использование подстроки - самый простой способ. Почему вы не хотите его использовать?

Ответ 6

Если строка всегда будет схожей, быстродействием будет использование StringTokenizer в одиночной кавычки. Затем вы просто возьмете второй токен.