替换字符串中所有出现的单词,但保留原始单词的大小写



我正在为项目添加搜索功能。输入搜索词时,我的程序会遍历 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();

你试过使用一些正则表达式吗?看看这个关于同一问题的问题使用 Java 和正则表达式转换字符串中的大小写

我希望它能帮助你

让它工作了。我需要使用 regEx 并将我在第二个参数中的search_term替换为 $1。正则表达式对我来说仍然有点神秘。谢谢大家的帮助!

elemenets.get(i).html(elemenets.get(i).html().replaceAll("(?i)(" + search_term + ")", "<span>$1</span>"));

最新更新