package com.zzjmay.iweibo.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.graphics.Color;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
/**
* 对字符串进行处理类,实现高亮,图片显示,URL地址的显示
*
* @author Administrator
*
*/
public class StringUtil {
private static final String START = "start";
private static final String END = "end";
private static final String TOPIC = "#.+?#";// 表示匹配话题
private static final String NAME = "@([\u4e00-\u9fa5A-Za-z0-9_]*)";// 表示@
private static final String URL = "http://.*";
//用于高亮文本的类
private static SpannableString spannableString;
public static boolean isEmpty(String s) {
return (null == s || "".equals(s));
}
public static SpannableString changeText(String str){
spannableString = new SpannableString(str);
height(Pattern.compile(TOPIC), str);
height(Pattern.compile(NAME), str);
height(Pattern.compile(URL), str);
return spannableString;
}
/**
* 根据不同的匹配进行提供不同的高亮显示
* @param pattern
* @param str
*/
private static void height(Pattern pattern, String str) {
List<HashMap<String, String>> hightList = getStartAndEnd(pattern, str);
for (HashMap<String, String> map : hightList) {
ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);
spannableString.setSpan(span, Integer.parseInt(map.get(START)),
Integer.parseInt(map.get(END)),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
/**
* 获取匹配信息的开始和结束位置,并存放进集合中
*
* @param pattern
* 匹配的正则表达式
* @param str
* 需要匹配的字符串
* @return
*/
private static List<HashMap<String, String>> getStartAndEnd(Pattern pattern,
String str) {
List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
// 进行匹配正则表达式
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
HashMap<String, String> map = new HashMap<String, String>();
map.put(START, matcher.start() + "");
map.put(END, matcher.end() + "");
list.add(map);
}
return list;
}
}
在android中高亮文本工具类
最新推荐文章于 2021-05-25 20:36:42 发布