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