Ответ 1
Обновлено:
Вы можете использовать регулярное выражение с регулярным выражением Patterns.WEB_URL
, чтобы найти все URL-адреса в тексте.
Оригинал:
Вы можете использовать Uri.parse(String uriString)
.
Я хочу проанализировать 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 без использования метода подстроки.
Обновлено:
Вы можете использовать регулярное выражение с регулярным выражением Patterns.WEB_URL
, чтобы найти все URL-адреса в тексте.
Оригинал:
Вы можете использовать Uri.parse(String uriString)
.
Используйте это:
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()]);
}
Да, это возможно. Попробуйте использовать следующий пример кода
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;
}
Спасибо Дипак
Если вы разбираете ссылки для их стилизации, 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));
Результат выглядит следующим образом:
Вы можете просто создать новый URL-адрес, передающий строку в качестве аргумента конструктору. Затем вы можете использовать различные методы класса URL для доступа к различным частям URL.
Хорошо, я вижу, что это не то, что вы имели в виду. Возможно, вы можете использовать регулярное выражение, но использование подстроки - самый простой способ. Почему вы не хотите его использовать?
Если строка всегда будет схожей, быстродействием будет использование StringTokenizer в одиночной кавычки. Затем вы просто возьмете второй токен.