java - 尝试提取 <html>..</html> 时,substringBetween() 返回 null

标签 java apache-stringutils

我正在构建一个小型 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

为什么控制台为 trimmedHtml 打印 null?输出应该(几乎)与 html 一样大。字符串输出或 substringBetween() 的参数是否有最大长度?

最佳答案

字符串 util 方法有效并且经过良好测试 - 这里没有“限制”或“错误”。

查看页面源代码显示 <html>不匹配:

<html lang="en" dir="ltr" class="client-nojs">

一个很好的例子,说明为什么 HTML 的字符串处理通常不是一个好主意。继续使用 Jsoup 提供的支持,它可能正在使用 html()获取 元素后的方法。

关于java - 尝试提取 <html>..</html> 时,substringBetween() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320628/

相关文章:

java - 如何使用 Java 发送 ISO8583 消息

Java PBEWithMD5AndDES

java - RecyclerView 行 onClick 和子按钮 onClick

java - 如何在Java中创建两个具有共享数据的数组

java - 使用 Robolectric 测试 Android 库

java - 使用 3 个面板创建 JSplitPane

java - Apache lang3 可以工作,但 Apache lang 不能。为什么?

java - StringUtils.capitalize() 的反函数

java - StringUtils - 替换同一行的不同单词

java - 了解 StringUtils.join 性能决策