
public class TextHighLight {public static SpannableStringBuilder matcherSearchContent(String text, String[] keyword1) {String[] keyword = new String[keyword1.length];System.arraycopy(keyword1, 0, keyword, 0, keyword1.length);SpannableStringBuilder spannable = new SpannableStringBuilder(text);CharacterStyle span;String wordReg;for (int i = 0; i < keyword.length; i++) {String key = "";if (keyword[i].contains("*") || keyword[i].contains("(") || keyword[i].contains(")")) {char[] chars = keyword[i].toCharArray();for (int k = 0; k < chars.length; k++) {if (chars[k] == '*' || chars[k] == '(' || chars[k] == ')') {key = key + "\\\\" + String.valueOf(chars[k]);} else {key = key + String.valueOf(chars[k]);}}keyword[i] = key;}wordReg = "(?i)" + keyword[i]; Pattern pattern = Pattern.compile(wordReg);Matcher matcher = pattern.matcher(text);while (matcher.find()) {span = new ForegroundColorSpan(Color.parseColor("#ff5656"));spannable.setSpan(span, matcher.start(), matcher.end(), Spannable.SPAN_MARK_MARK);}}return spannable;}
}
方法二:关键字格式为String
public class TextHighLight {public static SpannableStringBuilder matcheText(String text, String testKey, String colorString) {List<String> list = new ArrayList();for(int i = 0; i < testKey.length; i++){list.add(testKey.substring(i, i + 1));}String[] keyword1 = new String[list.size()];list.toArray(keyword1);String[] keyword = new String[keyword1.length];System.arraycopy(keyword1, 0, keyword, 0, keyword1.length);SpannableStringBuilder spannable = new SpannableStringBuilder(text);CharacterStyle span;String wordReg;for (int i = 0; i < keyword.length; i++) {String key = "";if (keyword[i].contains("*") || keyword[i].contains("(") || keyword[i].contains(")")) {char[] chars = keyword[i].toCharArray();for (int k = 0; k < chars.length; k++) {if (chars[k] == '*' || chars[k] == '(' || chars[k] == ')') {key = key + "\\\\" + String.valueOf(chars[k]);} else {key = key + String.valueOf(chars[k]);}}keyword[i] = key;}wordReg = "(?i)" + keyword[i]; Pattern pattern = Pattern.compile(wordReg);Matcher matcher = pattern.matcher(text);while (matcher.find()) {span = new ForegroundColorSpan(Color.parseColor(colorString));spannable.setSpan(span, matcher.start(), matcher.end(), Spannable.SPAN_MARK_MARK);}}return spannable;}
}