UBB码表情替换方法

今天来个UBB表情替换的功能方法。
前几天一直比较头疼应该如何把UBB替换成表情图片,想过用webview,也想过用viewgroup一个一个往上加。但是都不理想,用webview的话服务器端需要另做处理,比较麻烦;如果用viewgroup的话考虑到如果用户发了一百个表情的话就得用一百个imageview,我觉得会出人命的。后来找了些资料,发现ImageSpan可以实现,闲话不多了,重点说出来了,接下来上代码:
public static CharSequence addSmileySpans(Context mContext,
                        CharSequence text) {
                //之所以不用stringbuffer是因为这个东西可以将object添加进去
                SpannableStringBuilder builder = new SpannableStringBuilder(text);

                for (int i = 0; i < FilterUbbs.length; i++) {//循环遍历你所有的表情进行查找替换
                        //正则匹配
                        Matcher matcher = Pattern.compile(FilterUbbs[1]).matcher(text);
                        while (matcher.find()) {//查找匹配的类型
                                int resId = Integer.parseInt(FilterUbbs[0]);//需要替换的图片的资源ID
                                //哪哪,最重要的是这句话,将文字替换成图片
                                builder.setSpan(new ImageSpan(mContext, resId),
                                                matcher.start(), matcher.end(),
                                                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                        }
                }

                return builder;
        }

下面的这个二维数组是放查找正则和替换的图片资源的:
private static String[][] FilterUbbs = {
                        { R.drawable.laodao26_10 + "", "//[//bishi//]" },
                        { R.drawable.laodao1 + "", "//[:T//]" }}

注意写好正则就行了,试一下吧

你可能感兴趣的:(object,String,服务器)