Android-微博短链接正则表达式与特殊文本高亮
做新浪微博第三方客户端时,对正文内容的特殊字符(如网页短链接、##话题、@人名等)进行高亮变色,需要用到以下几个正则表达式。
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-微博短链接正则表达式与特殊文本高亮相关推荐
- php 短网址 算法,微博短链接算法PHP版本_php
思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...
- Java实现还原微博短链接
依赖 <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --><dependency>&l ...
- 微博短链接的生成算法(Java版本)
最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...
- java短链接原理_微博短链接的生成算法(Java版本)
最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...
- 微博短链接的生成算法(Java 版本)
最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责就 ...
- 微博短链接解析ShortUrl
1.为什么用短链 短网址应用已经在各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaurl.cn等. 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http: ...
- URL短链接压缩算法 微博短链接原理解析
短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaurl.cn,六度短网址6du.in等. 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如: ...
- php版本算法,微博短链接算法PHP版本
)将长网址md 生成 位签名串 分为 段 每段 个字节 )对这四段循环处理 取 个字节 将他看成 进制串与 x fffffff( 位 )与操作 即超过 位的忽略处理 )这 位分成 段 每 位的数字作为 ...
- php短连接解析,微博短链接算法php版本实现代码
思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...
最新文章
- 移动 Web 开发技巧
- python返回unicode_Python 中通过 unicode 码返回单字符的函数是 ,返回单字符 unicode 码的函数是 。_学小易找答案...
- 【原】DjianGo Windows7下的安装
- 《C语言编程——零基础初学者指南(第3版)》一第1章 什么是C程序设计1.1 什么是程序...
- php学习_与mysql的连接 2013.01.04
- oracle dw报告,讲解Oracle数据库的全文索引设置步骤
- LUOGU P4016 负载平衡问题
- java 线程间的通讯(升级版)
- 统计学硕士做了3年表格,多次跳槽失败,只因学不会数据工具
- 9个有趣的Python小项目,练手必备(附源码)
- 诺基亚10.22变革影响的分析
- Openwrt源码LuCI应用完整说明
- 2021-1016-复盘 强势股-风口综合实战
- 使用font-face艺术字失效
- 恋与制作人 服务器错误,恋与制作人登陆不了怎么办 登录失败无法登录DNS劫持全解析...
- 企业管理软件,真的以业务流程为中心?
- python二级证书含金量排名_计算机二级证书含金量有多高?你真的知道吗???...
- 离散数学_九章:关系(5)
- 深海打捞计划——VapourSynth学习笔记(一)
- fifa足球世界微信多少服务器,FIFA足球世界 微信登录版
热门文章
- 怎样真正确保教师工资待遇 丹比奴
- 基本确认‘汉芯一号’造假属实
- 递归算法之汉诺塔的实现
- 我用一只爬虫俘虏了面试官并收获了offer
- 宫廷心计服务器修复,宫廷心计2021版本
- 华为手机什么时候更新鸿蒙系统_华为什么时候用鸿蒙系统 鸿蒙OS上市时间与支持机型...
- uniapp-excel表格展示
- 运用数据分析论坛签名和外链在百度新算法中的效果
- linux间文件实时同步(syncthing) ---带历史版本“后悔药”
- php日历css样式,如何在HTML5和CSS3创建一个日历图标