将多个字符串高亮显示之TTTAttributedLabel_IOS

下面通过代码图和效果图展示给大家

TTTAttributedLabel进行多个字符串的高亮显示。

需要对每个字符串进行匹配,从而得到所有需要高亮的NSRange,然后利用NSMutableAttributedString对每个NSRange添加attribute

首先 是字符串匹配算法,可以研究下kmp和bm算法,这里我直接用了OC自带的 NSRegularExpression 来进行正则表达式匹配,应该算是最简单直接的方式了

传入字符串text,和需要高亮的字串patterns , 正则表达式就是字串的 "|" 集合, 根据正则表达式进行字串的大小写不敏感匹配, 然后枚举生成的NSTextCheckingResult,保存在数组中,接下来就可以对label字体进行设置了

这里用的是TTTAttribute的setText:afterInheritingLabelAttributesAndConfiguringWithBlock:方法, 在代码块里面遍历所有的NSTextCheckingResult对象,对其中的NSRange进行颜色字体的设置就完成了想要的效果

当然,也可以进行字符串的裁剪,本人自己的一个解决方案是给定一个需要的最大的字符串长度,进行裁剪

<

因为需求多种多样,裁剪的部分也不尽相同,这个就只能帮到这里了,如果有比较有趣或者奇葩的裁剪需求,欢迎和本人交流。

附上效果图一枚 :

以上就是本文的全部内容,希望大家喜欢。

时间: 2024-09-25 11:32:04

将多个字符串高亮显示之TTTAttributedLabel_IOS的相关文章

Linux基础命令介绍四:文本编辑vim

本文介绍vim(版本7.4)的一般用法. vim是功能强大的文本编辑器,是vi的增强版. vim [options] [file ..]  使用vim编辑一个文件的最常用命令就是: vim file  其中file可以是一个新文件,也可以是原有文件.这样的命令执行后将打开编辑器,显示文件file的内容.如图所示: 如果是一个新文件,底部左边会显示"file" [新文件]的字样,右边显示0,0-1表示当前光标所在行数和字符数.如果打开的是一个老文件,底部左边显示"file&qu

再来一个一个把字符串按php代码高亮显示的函数

高亮显示|函数|字符串 ///// by iwind.org  coldwind/iwind/month/ccterran//这个函数是对标签里的内容进行分析,并输出//例如://  <?php $string=' 以下内容为程序代码<?$hello="hello";?>sssssssssssss';//        highlight($string);//    ?>//保留了不完全的标签,如只有 以下内容为程序代码,没有,则输出中含有[code]    

使用正则表达式的格式化与高亮显示json字符串_javascript技巧

json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显示 首先是对输入进行转换,如果是对象则转化为规范的json字符串,不是对象时,先将字符串转化为对象(防止不规范的字符串),然后再次转化为json串.其中json为输入. 复制代码 代码如下: if (typeof json !== 'string') {     json = JSON.string

asp.net richTextBox中高亮显示选中字符串或文本_实用技巧

实例验证如下: 复制代码 代码如下: private void 突出显示(string 要查找字符串) { //首先找到要查找字符串的起始位置 int 开始位置=richTextBox短语显示.Find(要查找字符串); //判断一下是否找到,如果找不到那么开始位置是-1 if (开始位置>=0) { richTextBox短语显示.SelectionStart = 开始位置; //得到字符串的长度 richTextBox短语显示.SelectionLength = 要查找字符串.Length;

给whygod,如何过滤高亮显示非法字符!

高亮显示 <?//我只是做一个测试,如果再用类似tmd的字符串,一定要注意,如果字符串中的字符出现在$StartReplaceHtml或者$EndReplaceHtml中,你需要修改下面的preg_replace中的规则$CheckedMessage="Hello!!他X的..他....X...的....How are you m d ";     //the message to be checked echo $CheckedMessage."<br>&

JS页内查找关键词的高亮显示

js|高亮显示 <html><META HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80"><TITLE>WinWebMail</TITLE><LINK href="images\hwem.css" rel=stylesheet><script language="JavaScript&quo

vim中取消高亮显示的两个办法

vim是vi的加强版. 进入vim或编辑完毕按esc后,输入/可帮助查找字符串,例如/main帮助查找main函数,找到的main高亮显示. 取消高量显示的两个办法: 1)按esc键,输入:nohl 2)按esc键,查找不存在的字符串,例如/xxxx

ASP 高亮显示不区分大小写的关键字

 今日,碰到一个问题:如何在网页中高亮显示不区分大小写的关键字 例如:文本abcaBcabCaBCabcaBCa,关键字bc,在不区分大小写的情况,一共有6个匹配项. 则在网页中显示的是abcaBcabCaBCabcaBCa. 很多人,想到是replace函数.原型为 Replace(string,find,replacewith[,start[,count[,compare]]]) string 必选项,字符串表达式,包含要替代的子字符串 find 必选项,被搜索的子字符串 replacewi

JavaScript正则方法replace实现搜索关键字高亮显示

前言 正则表达式是字符串处理工具中强有力的工具.也有人认为这只是一个小玩具,但不管怎么说都离不开它. 这里介绍的是JavaScript的正则表达式的replace方法 ,和实现搜索关键字高亮的功能. 先介绍一下正则表达式的replace方法 replace介绍 w3school原文链接介绍 正则表达式如何使用特殊字符$来表示原来的文本,这是实现搜索高亮的关键, var str = "asad sad 123 sd qwe21"; str.replace(/\d+/img,"数