substringBetween() возвращает ноль при попытке извлечь <html>..</ html>
Я строю небольшое Java-приложение для извлечения пяти страниц Википедии и поиска подстрок в исходном коде html. Я использую библиотеку org.apache.commons.lang3.StringUtils. Однако статья в Википедии может быть большой, и в StringUtils есть ограничение:
String html;
try {
html = Jsoup.connect("http://en.wikipedia.org/wiki/Canada").get().html();
} catch(IOException e) {
html = "";
}
String trimmedHtml = substringBetween(html, "<html>", "</html>");
System.out.println(html); // prints the whole source code fine
System.out.println(trimmedHtml); // prints null
Почему консоль печатает null
за trimmedHtml
? Выход должен быть (почти) таким же большим, как и для html
, Существует ли максимальная длина для вывода строки или для параметров substringBetween()
?
1 ответ
Строковые методы util работают и хорошо проверены - здесь нет "ограничений" или "ошибок".
Просмотр страницы источника показывает, что <html>
не будет соответствовать:
<html lang="en" dir="ltr" class="client-nojs">
Отличный пример того, почему обработка строк HTML не очень хорошая идея в целом. Продолжайте использовать поддержку, предлагаемую Jsoup, которая может использовать метод html() после получения элемента .