我有以下的Java正則表達式替換邏輯車削代替正則表達式轉換成Java算法
text.replaceAll("(?i)(" + keyword + ")(?!([^<]+)?>>)", "<b>$1</b>");
它所做需要keyword
和查找它的HTML頁面上,而忽略大小寫和HTML標籤的內容。它會捕獲找到的關鍵字並用<b></b>
標籤包圍它。
我該如何使用StringBuilder
或StringBuffer
,可能是HashMap
?目標是更好的表現。
UPDATE
我使用新commons lang 3 beta package裝箱以下方法:
public static String highlight(String text, String q) {
String[] textAr = StringUtils.split(text, " ");
int len = textAr.length;
int index = 0;
while (index < len){
if (textAr[index].startsWith("<")) {
while (!textAr[index].endsWith(">")) {
index++;
}
}
if (StringUtils.equalsIgnoreCase(textAr[index], q)){
textAr[index] = "<b>"+textAr[index]+"</b>";
}
index++;
}
return StringUtils.join(textAr," ");
}
運行一些測試後,我接到了上述溶液約10%的性能提升。任何有關如何改善沒有正則表達式的建議,將不勝感激。
請原諒我的嘮叨,但'不要用正則表達式解析html'是SO上最常見的推薦之一。您可以在SO評分最高的用戶強調這一點時找到許多相關答案。 – 2011-01-23 16:30:18