0

我正在向项目添加搜索功能。当输入一个搜索词时,我的程序会遍历一个 html 字符串,并将该词的所有出现替换为由 span 标签包围的搜索词。replaceAll() 方法替换了单词,但它不完全是我想要做的。我不知道如何保持原词的大小写。例如,如果我搜索“hello”:“Hello”变为“hello”,“HELLO”变为“hello”。为了解析 html,我使用的是 jsoup。

Document doc = Jsoup.parse(content);   
Elements elemenets = doc.body().getAllElements();

        for (int i = 1; i < elemenets.size(); i++) {
            String elementText = elemenets.get(i).text();

            if (elementText.toLowerCase().contains(search_term.toLowerCase())) {

                elemenets.get(i).html(elemenets.get(i).html().replaceAll("(?i)" + search_term, "<span id = 'first' style ='background-color:#fbaf5d;'>" + search_term + "</span>"));
            }

        }
String result = doc.toString();
4

2 回答 2

1

得到它的工作。我需要使用 regEx 并将 replaceAll 的第二个参数中的 search_term 替换为 $1。RegEx 对我来说仍然有点神秘。谢谢大家的帮助!

elemenets.get(i).html(elemenets.get(i).html().replaceAll("(?i)(" + search_term + ")", "<span>$1</span>"));
于 2013-10-16T16:34:07.697 回答
1

您是否尝试过使用一些正则表达式?看看this question about the same question Use Java and RegEx to convert case in a string

我希望它会帮助你

于 2013-10-16T16:08:14.117 回答