Intereting Posts
Автоматическое увеличение значения в Firebase Значение по умолчанию для Bundle.getString (String key) Java.lang.IllegalArgumentException: Недопустимый символ в запросе Конвертировать изображения (Bitmap) в популярный формат видео на Android Проблемы с Vimeo Player в веб-приложении Android App Как избежать обратного проектирования файла ресурсов ресурсов папок APK? Разница между thread / runnable, обработчиком, runonuithread, asynctask Расположение Android SDK не должно содержать пробелов, так как это вызывает проблемы с инструментами NDK Ionic Android apk не имеет доступа к Интернету KeyStore getEntry возвращает null после смены пароля Инструмент Android InstrumentationTestRunner для вывода хадсона Ошибка подключения дооснащения RetrofitError.response как null Возвратитесь к родительской активности с ошибкой родительской активности в манифесте Кордовы ошибка строительства – EPERM, операция не разрешена Почему имеет значение, где Toast производится в Android, если контекст один и тот же?

Поиск подстроки между определенными символами с неизвестным индексом

У меня есть строка, такая как:

<div class="photo-box biz-photo-box pb-60s"> <a href="/biz/the-kerry-piper-willowbrook"> <img class="photo-img" alt="" height="60" src="http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg" width="60"> </a> 

Как я могу получить URL-адрес

 http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg 

Из этой строки?

Я думал о string.indexOf (), но количество символов до и после URL может меняться, поэтому я не знаю, по какому индексу эта подстрока начинается, и это может быть беспорядочно. Любой лучший подход?

Используйте Jsoup для очистки / разбора HTML из URL , файла или строки и использования его синтаксиса jQuery, например селектора.

 String htmlStr="<div class=\"photo-box biz-photo-box pb-60s\">" + "<a href=\"/biz/the-kerry-piper-willowbrook\">" + "<img class=\"photo-img\" alt=\"\" height=\"60\" src=\"http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg\" width=\"60\">" + "</a>"; org.jsoup.nodes.Document doc=org.jsoup.Jsoup.parse(htmlStr); String src=doc.select("img").attr("src"); System.out.println(src); 

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

Что-то вроде,

 Pattern pattern = Pattern.compile("<img.*?src=\"([^\"]+)\"",Pattern.CASE_INSENSITIVE); Matcher m = pattern.matcher(data); while(m.find()) { srcUrl = m.group(1)); }