在段落中查找非HTML标记词

时间:2013-10-10 19:10:10

标签: java jsoup

我有这样的事情:

<p id="tire">I need new tires for my car</p>

我正在尝试写一些能够突出我指定的单词的东西,但不是那些被认为是标签的东西。例如,如果我想强调“轮胎”,我理论上会看到:

<p id="tire">I need new <strong>tire</strong>s for my car</p>

但不幸的是,我明白了:

<p id="<strong>tire</strong>">I need new <strong>tire</strong>s for my car</p>

我只使用一个简单的replaceAll(oldWord,newFormat)。有没有可以提供帮助的图书馆?我正在使用jsoup来抓取我将要搜索的HTML。

3 个答案:

答案 0 :(得分:3)

您可以使用选择方法getElementsContainingOwnText(String searchText)来选择包含您要查找的单词的元素。在这种情况下,“轮胎”。

作为一个例子:

虚拟HTML

<html>
 <head></head>
 <body> 
  <p id="tire">I need new tires for my car</p>
 </body>
</html>

我们的Jsoup代码:

Elements e = doc.getElementsContainingOwnText("tire");
for (Element el : e) {
    el.text(el.ownText().replace("tire", "<strong>tire</strong>"));
}

生成的文档打印输出:

<html>
 <head></head>
 <body> 
  <p id="tire">I need new <strong>tire</strong>s for my car</p>
 </body>
</html>

答案 1 :(得分:0)

使用查找和替换,在单词前添加一个空格,如“轮胎”

并替换<strong>tire</strong>s

答案 2 :(得分:0)

尝试:

replaceAll("tire", "<strong>tire</strong>");
replaceAll("id=\"<strong>tire</strong>\"", "id=\"tire\"");

这解决了特定问题,但你可以得到其他人认为