多个关键字高亮

项目地址:iOS 关键词高亮显示

在做搜索时,经常用到关键字高亮。以下是我的项目用到的关键字高亮。

1 //关键字数组 关键字颜色

[lb setAttributedText:text withRegularPattern:[text regularPattern:keyArr] attributes:@{ NSForegroundColorAttributeName : [UIColor redColor]}];

2

/**

关键字 正则判断

*/

-(NSString *)regularPattern:(NSArray *)keys{

NSMutableString *pattern = [[NSMutableString alloc]initWithString:@"(?i)"];

for (NSString *key in keys) {

[pattern appendFormat:@"%@|",key];

}

return pattern;

}

3

/**

关键字高亮设置

*/

- (void)setAttributedText:(NSString *)text

withRegularExpression:(NSRegularExpression *)expression

attributes:(NSDictionary *)attributesDict

{

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];

[expression enumerateMatchesInString:text

options:0

range:NSMakeRange(0, [text length])

usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {

NSRange matchRange = [result range];

if (attributesDict) {

[attributedString addAttributes:attributesDict range:matchRange];

}

if ([result resultType] == NSTextCheckingTypeLink) {

NSURL *url = [result URL];

[attributedString addAttribute:NSLinkAttributeName value:url range:matchRange];

}

}];

[self setAttributedText:attributedString];

}

时间: 2024-10-26 00:06:42

多个关键字高亮的相关文章

Lucene系列:(7)搜索关键字高亮

在搜索结果中,将与关健字相同的字符用红色显示 TestHighlighter.java package com.rk.lucene.d_highlighter; import java.util.ArrayList; import java.util.List; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.query

IOS_SearchBar搜索栏及关键字高亮

搜索框的效果演示: 这个就是所谓的搜索框了,那么接下来我们看看如何使用代码来实现这个功能. 我所使用的数据是英雄联盟的英雄名单,是一个JSON数据的txt文件, JSON数据的处理代码如下所示: ? 1 2 3 4 5 6 //获取文件的路径path NSString *path = [[NSBundle mainBundle] pathForResource:@"heros" ofType:@"txt"]; //将路径下的文件转换成NSData数据 NSData

在 Angular 中实现搜索关键字高亮

在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数据展示在页面中. 但是,在有些情况下,比如我们有一个搜索框,希望将搜索的关键字在正文中高亮出来,这时候就会感觉比较吃力了,filter 可以帮助我们处理这种情况. 实际上,很多时候,我们的数据是不能直接输出到 DOM 中的,典型的比如日期,或者货币等等,通常需要将我们内部的数据格式化之后,再输出到页

label中的关键字高亮

一 .在初始化方法中把所有需要高亮关键字的label加入到labels数组中,并且把这些label原来字体的颜色加入到 labelTextColors中 ,代码如下 self.labels = [NSArray arrayWithObjects:self.textLabel,self.detailTextLabel, nil]; self.labelTextColors = [NSArray arrayWithObjects:kColor_Black,kColor_LightGray, nil]

JavaScript搜索关键字高亮的实现

高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色.一般在搜索结果页面会经常用到这个功能. 下面就为大家提供一种解决方案,用javascript实现.遂平县敖松广告 首先在<head>中引入下面javascript方法: 01 <script type="text/javascript"> 02 //<![CDATA[ 03     //--------begin function fHl(o, flag, rndColor, url)

vim自定义添加关键字高亮

使用vim编写java代码时,String没有高亮,而其他数据类型例如int char等都有语法高亮,这让我非常难受,所以我想把String也设置成高亮 1.打开vim的syntax文件夹 # cd /usr/share/vim/vim81/syntax 因为每一种语言的语法高亮都在syntax文件夹内,以后缀vim形式存在 2.打开java.vim # vi java.vim 3.添加String关键字 找到 syntax keyword javaType 发现后面的关键字没有String,手

大段文本的多个关键字高亮

前几天看到有人提在网页中实时高亮关键字,大约6万多个字中高亮600个关键字,用户可以随时修改并及时高亮,也就是onkeyup时做高亮,说用正则在IE下效率不理想 想了下自已给了一个实现方案:比如这段文本是:"这是一大段文本,一大段文本哦"关键字是:["这是","大段文本","哦"]首先找出最长的关键字,并把这些关键字弄成map,如: var keys = ['这是', '这里是', '文本', '一']; var prepar

iOS 关于关键字高亮

- (NSMutableAttributedString *)colorStr: (NSString *)originalStr   // originalStr : 需要高亮传入的字符串 { NSMutableAttributedString *dataStr = [[[NSMutableAttributedString alloc] initWithString:originalStr] autorelease]; for (int i = 0; i < originalStr.length

设置Shader关键字高亮(网上转)

原文链接:http://www.cnblogs.com/cg_ghost/archive/2011/11/30/2268734.html 经过试验,在VS2012有效. 1. 创建或编辑usertype.dat文件(此文件在VS安装目录下的Common7\IDE下面,比如我的就在D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\usertype.dat),添加如下的关键字列表,每个单词占一行,如果你想添加你自己的关键字,也可以按照这种方