用戶輸入了重復的關鍵字發現程序處理有問題,存在問題
1:改變了原文字母大小寫(最初解決方案是正則 repalceall)
2:關鍵字重復(包括 重復及含有)
3:對關鍵字的有效性處理(如全角","問題,空數據問題)
改進
1:不改變原文的字母大小寫 2:關鍵字重復(包括 重復及含有) 3:對關鍵字的有效性處理(如全角","問題,空數據問題)
程序實際運行效果:
2020-03-17修正關鍵字之間有子集的情況和關鍵字首尾拼接情況:
修正算法:
應用截圖:
以下為單詞方式:
package reyo.sdk.utils.test.algorithms; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * <B>創 建 人:</B>AdministratorReyoAut <BR> * <B>創建時間:</B>2020年3月28日 上午11:45:01<BR> * * @author ReYo * @version 1.0 */ public class reyo { /** * @param args */ public static void main(String[] args) { String source = "aa reyo Reyo bb rEYO"; String patternstring = "reyo"; System.out.println(IgnoreCaseReplace(source, patternstring)); } /** * java實現不區分大小寫高亮替換 * @param source * @param patternstring * @return */ public static String IgnoreCaseReplace(String source, String patternstring) { Pattern p = Pattern.compile(patternstring, Pattern.CASE_INSENSITIVE); Matcher mc = p.matcher(source); StringBuffer sb = new StringBuffer(); while (mc.find()) { mc.appendReplacement(sb, "<font color='red' >" + mc.group() + "</font>"); } mc.appendTail(sb); return sb.toString(); } }