如何在 HTMLDocument 中搜索文本,然后返回该单词/句子的索引和最后一个索引,但在搜索时忽略标签..
搜索: stackoverflow
html: <p class="red">stack<b>overflow</b></p>
这应该返回索引 15 和 31。
就像在网页中搜索时在浏览器中一样。
如果您想在 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");
}