Как извлечь все URL из текста в Android - PullRequest
1 голос
/ 08 мая 2019

Я хочу получить все URL из данного текста, используя Patterns.WEB_URL.matcher(qrText);

Что я хочу сделать:

Я сканирую QR-код,

  • открыть ссылку в webView, если ссылка содержит ссылку, которая содержит слово «veridoc»
  • , отображаемую в textView, если отсканированный текст не является ссылкой или другой ссылкой, не содержащей слова"veridoc"

Что я пробовал:

private void initialize() {
    if (getIntent().getStringExtra(Constants.KEY_LINK) != null) {
        qrText = getIntent().getStringExtra(Constants.KEY_LINK);
        webMatcher = Patterns.WEB_URL.matcher(qrText);
    }

    if (qrText.contains("veridoc") && webMatcher.matches()) {
            //if qr text is veridoc link
            Log.e("veridoc link", qrText);
            setupWebView(qrText, false);
        } else if (webMatcher.matches()) {
            //if qr text is link other than veridoc
            Log.e("link", qrText);
            openInBrowser(qrText);
            finish();
        } else if  (qrText.contains("veridoc") && webMatcher.find()) {
            //if qrText contains veridoc link + other text.
            String url = webMatcher.group();

            if (url.contains("veridoc")) {
                Log.e("veridoc link found", url);
                setupWebView(url, true);
            } else
                showQRText(qrText);
        } else {
            //the qrText neither is a link nor contains any link that contains word veridoc
            showQRText(qrText);
        }
    } 
}

В приведенном выше коде,

  • setupWebView(String strUrl, boolean isTextAndUrlBoth) Настройка веб-просмотра и загрузки URL-адреса и т. Д.

  • openInBrowser(String url) открывает предоставленный URL в браузере.

  • showQRText(String text) показывает предоставленныйтекст в textView с форматированием.

Проблема

Если текст содержит некоторый текст и более одной ссылки, String url = webMatcher.group(); всегда выбираетПервая ссылка в тексте.

Что я хочу

Я хочу получить все ссылки из текста и выяснить, какие ссылки содержат слово "veridoc".После этого я хотел бы вызвать метод setupWebView(url, true);.

Я использую следующую ссылку и текст для примера

name: Something Profession: Something link1: https://medium.com/@rkdaftary/understanding-git-for-beginners-20d4b55cc72c ссылка 2: https://my.veridocglobal.com/login Может ли кто-нибудь помочь мне найти все ссылки, присутствующие в тексте?

1 Ответ

1 голос
/ 08 мая 2019

Вы можете выполнить поиск, чтобы найти различные веб-сайты и настроить списки массивов с этим

Matcher webMatcher = Patterns.WEB_URL.matcher(input);
ArrayList<String> veridocLinks = new arrayList<>();
ArrayList<String> otherLinks = new arrayList<>();

while (webMatcher.find()){
    String res = webMatcher.group();
    if(res!= null) {
        if(res.contains("veridoc")) veridocLinks.add(res);
        else otherLinks.add(res);
    }
}

. Приведенный пример ввода:

String input = "http://www.veridoc.com/1 some text http://www.veridoc.com/2 some other text http://www.othersite.com/3";

Ваш ArrayLists будет содержать:

veridocLinks : "http://www.veridoc.com/1", "http://www.veridoc.com/2"
otherLinks : "http://www.othersite.com/3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...