您的位置:首页 > 其它

正则表达式解析img标签以及给部分文字设置颜色和超链接

2017-06-22 09:59 429 查看
//设置部分文字超链接

public static SpannableStringBuilder span(Context context,String content,ArrayList<Integer> al,ArrayList<String> imgurl)

{

int start=0;

al=new ArrayList<>();

imgurl=new ArrayList<>();

//正则表达式

Pattern p = Pattern.compile("<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>");//<img[^<>]*src=[\'\"]([0-9A-Za-z.\\/]*)[\'\"].(.*?)>");

Matcher m = p.matcher(content);

int l=6;

while(m.find()){

int stat = m.start();

al.add(stat-start);

start+=m.group().length()-l;

imgurl.add(m.group(1));

}

String replaceAll = m.replaceAll("[查看图片]");

//设置部分文字的颜色

SpannableStringBuilder spannable = new SpannableStringBuilder(replaceAll);

for (int i = 0; i < al.size(); i++) {

spannable.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.textcolor_select)),al.get(i),al.get(i)+l

,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

spannable.setSpan(new Textclick(context,i,imgurl),al.get(i),al.get(i)+l

, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

spannable.setSpan(new URLSpan(imgurl.get(i)), al.get(i), al.get(i)+l, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

spannable.setSpan(new SubscriptSpan(), al.get(i), al.get(i)+l, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

}

return spannable;

}

//部分文字的点击事件

public static class Textclick extends ClickableSpan

{

private Context context;

private int index;

private ArrayList<String> imgurl;

public Textclick(Context context,int index,ArrayList<String> imgurl) {

super();

this.context = context;

this.index=index;

this.imgurl=imgurl;

}

@Override

public void onClick(View widget) {

// TODO 自动生成的方法存根

String url = imgurl.get(index);

showImage(context,url);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐