0

如何在 HTMLDocument 中搜索文本,然后返回该单词/句子的索引和最后一个索引,但在搜索时忽略标签..

搜索: stackoverflow
html: <p class="red">stack<b>overflow</b></p>

这应该返回索引 15 和 31。

就像在网页中搜索时在浏览器中一样。

4

1 回答 1

0

如果您想在 Java 中执行此操作,这里是使用 Jsoup 的粗略示例。但是当然你应该实现细节,以便代码可以正确解析任何给定的 html。

String html = "<html><head><title>First parse</title></head>"
      + "<body><p class=\"red\">stack<b>overflow</b></p></body></html>";

String search = "stackoverflow";

Document doc = Jsoup.parse(html);
String pPlainText = doc.body().getElementsByTag("p").first().text(); // will return stackoverflow

if(search.matches(pPlainText)){
    System.out.println("text found in html");

    String pElementString = doc.body().html(); // this will return <p class="red">stack<b>overflow</b></p></body>
    String firstWord = doc.body().getElementsByTag("p").first().ownText(); // "stack"
    String secondWord = doc.body().getElementsByTag("p").first().children().first().ownText(); // "overflow"

    //search the text in pElementString
    int start = pElementString.indexOf(firstWord); // 15
    int end = pElementString.lastIndexOf(secondWord) + secondWord.length(); // 31
    System.out.println(start + " >> " + end);

}else{
    System.out.println("cannot find searched text");
}
于 2013-02-04T03:12:16.507 回答