Android 字符串批量匹配关键字并高亮处理

有一个需求,敏感词检测,App端将文本框输入的字符长串提交到后端,后端返回敏感词数组,前端输入框对敏感词关键字高亮处理。

第一步:从 字符串找出包含某关键字的所有地方。利用到的类:Pattern,Matcher ,java 基础入门正则表达式 用到的两个类。

Pattern p = Pattern.compile(Pattern.quote(sensitiveContentWord));//关键字

Matcher m = p.matcher(srcText);//匹配关键字

while (m.find()) {

int start = m.start();

int end = start + sensitiveContentWord.length();

}

第二步:高亮着色。

Android 着色大家想到的是 SpannableString加 ForegroundColorSpan,那如何批量着色高亮处理呢?我们需要用到一个新的类:SpannableStringBuilder,和 String 与StringBuilder 同理,下面是敏感词关键字高亮处理。

public static SpannableStringBuilder findSpecWordAndHighLight(String srcText, List<String> keyWords, int highLightColor){

if (EmptyUtils.isEmpty(srcText))return new SpannableStringBuilder("");

SpannableStringBuilder spannable = new SpannableStringBuilder(srcText);

if (EmptyUtils.isNotEmpty(keyWords)) {

for (String sensitiveContentWord : keyWords) {

Pattern p = Pattern.compile(Pattern.quote(sensitiveContentWord));//关键字

Matcher m = p.matcher(srcText);//匹配关键字

while (m.find()) {

int start = m.start();

if (start >= 0) {

int end = start + sensitiveContentWord.length();

spannable.setSpan(new ForegroundColorSpan(highLightColor), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE );

}

}

}

}

return spannable;

}

(0)

相关推荐