做新浪微博第三方客户端时,对正文内容的特殊字符(如网页短链接、##话题、@人名等)进行高亮变色,需要用到以下几个正则表达式。

  

1 /**微博短链接正则表达式*/
2      static final String regex_http = "http(s)?://([a-zA-Z|\\d]+\\.)+[a-zA-Z|\\d]+(/[a-zA-Z|\\d|\\-|\\+|_./?%=]*)?";
3      static final String regex_at = "@[\\u4e00-\\u9fa5\\w\\-]+";
4      static final String regex_sharp="#([^\\#|.]+)#";
5      static final String regex_emoji="\\[[a-zA-Z0-9\\u4e00-\\u9fa5]+\\]";

  接下来是高亮特殊字段的函数,在前面的一篇随笔《Android-TextView关键字高亮与超链接》中有范例,本例将其进行改造,令其适合于本项目的使用。

 1 /**
 2      * 高亮部分文本
 3      * @param content  文本内容
 4      * @return
 5      */
 6     public static SpannableString setTextHighLight(String content) {
 7         SpannableString result = new SpannableString(content);
 8
 9         if (content.contains("@")) {
10             Pattern p = Pattern.compile(regex_at);
11             Matcher m = p.matcher(result);
12             while (m.find()) {
13                 int start = m.start();
14                 int end = m.end();
15                 result.setSpan(
16                         (new ForegroundColorSpan(Color.parseColor("#33b5e5"))),
17                         start, end, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
18             }
19         }
20
21         if (content.contains("#") ){
22             Pattern p = Pattern.compile(regex_sharp);
23             Matcher m = p.matcher(result);
24             while (m.find()) {
25                 int start = m.start();
26                 int end = m.end();
27                 result.setSpan(
28                         (new ForegroundColorSpan(Color.parseColor("#ff7d00"))),
29                         start, end, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
30             }
31         }
32
33         if (content.contains("http://") ){
34             Pattern p = Pattern.compile(regex_http);
35             Matcher m = p.matcher(result);
36             while (m.find()) {
37                 int start = m.start();
38                 int end = m.end();
39                 result.setSpan(
40                         (new ForegroundColorSpan(Color.parseColor("#33b5e5"))),
41                         start, end, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
42             }
43         }
44
45         return result;
46     }

  接下来是对上述方法的应用

1      SpannableString text = Utils.setTextHighLight(weibo.getText());
2         holder.content.setText(text);

  效果图如下

  

  

Nexus5截屏小Tips:

同时按下【音量下键】和【电源键】即可快速截屏,一起按这两个键2秒搞定。

转载于:https://www.cnblogs.com/Syun0929/p/3737960.html

Android-微博短链接正则表达式与特殊文本高亮相关推荐

  1. php 短网址 算法,微博短链接算法PHP版本_php

    思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...

  2. Java实现还原微博短链接

    依赖 <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --><dependency>&l ...

  3. 微博短链接的生成算法(Java版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...

  4. java短链接原理_微博短链接的生成算法(Java版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...

  5. 微博短链接的生成算法(Java 版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责就 ...

  6. 微博短链接解析ShortUrl

    1.为什么用短链 短网址应用已经在各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaurl.cn等. 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http: ...

  7. URL短链接压缩算法 微博短链接原理解析

    短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaurl.cn,六度短网址6du.in等. 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如: ...

  8. php版本算法,微博短链接算法PHP版本

    )将长网址md 生成 位签名串 分为 段 每段 个字节 )对这四段循环处理 取 个字节 将他看成 进制串与 x fffffff( 位 )与操作 即超过 位的忽略处理 )这 位分成 段 每 位的数字作为 ...

  9. php短连接解析,微博短链接算法php版本实现代码

    思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...

最新文章

  1. 移动 Web 开发技巧
  2. python返回unicode_Python 中通过 unicode 码返回单字符的函数是 ,返回单字符 unicode 码的函数是 。_学小易找答案...
  3. 【原】DjianGo Windows7下的安装
  4. 《C语言编程——零基础初学者指南(第3版)》一第1章 什么是C程序设计1.1 什么是程序...
  5. php学习_与mysql的连接 2013.01.04
  6. oracle dw报告,讲解Oracle数据库的全文索引设置步骤
  7. LUOGU P4016 负载平衡问题
  8. java 线程间的通讯(升级版)
  9. 统计学硕士做了3年表格,多次跳槽失败,只因学不会数据工具
  10. 9个有趣的Python小项目,练手必备(附源码)
  11. 诺基亚10.22变革影响的分析
  12. Openwrt源码LuCI应用完整说明
  13. 2021-1016-复盘 强势股-风口综合实战
  14. 使用font-face艺术字失效
  15. 恋与制作人 服务器错误,恋与制作人登陆不了怎么办 登录失败无法登录DNS劫持全解析...
  16. 企业管理软件,真的以业务流程为中心?
  17. python二级证书含金量排名_计算机二级证书含金量有多高?你真的知道吗???...
  18. 离散数学_九章:关系(5)
  19. 深海打捞计划——VapourSynth学习笔记(一)
  20. fifa足球世界微信多少服务器,FIFA足球世界 微信登录版

热门文章

  1. 怎样真正确保教师工资待遇 丹比奴
  2. 基本确认‘汉芯一号’造假属实
  3. 递归算法之汉诺塔的实现
  4. 我用一只爬虫俘虏了面试官并收获了offer
  5. 宫廷心计服务器修复,宫廷心计2021版本
  6. 华为手机什么时候更新鸿蒙系统_华为什么时候用鸿蒙系统 鸿蒙OS上市时间与支持机型...
  7. uniapp-excel表格展示
  8. 运用数据分析论坛签名和外链在百度新算法中的效果
  9. linux间文件实时同步(syncthing) ---带历史版本“后悔药”
  10. php日历css样式,如何在HTML5和CSS3创建一个日历图标