NSTextCheckingResult类 ios自带识别电话号码,网址等

NSDataDetector是NSRegularExpression的子类,主要用于检测半结构化的数据:日期,地址,电话号码,正则表达式等等。
//首先有一段字符串
NSString *str = @"www.baidu.comdhfjdfj17701031767";
//根据检测的类型初始化 这里是检测电话号码和网址
NSDataDetector NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber | NSTextCheckingTypeLink error:&error];
//获得检测所得到的数组
 NSArray *matches = [detector matchesInString:str options:0 range:inputRange];
//获得检测得到的总数
 //- (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;
//第一个检测到的数据
//- (NSTextCheckingResult *)firstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;
for (NSTextCheckingResult *match in matches) {

//当match匹配为网址时设置颜色
    if ([match resultType] == NSTextCheckingTypeLink) {
            NSRange matchRange = [match range];
          if ([self isIndex:index inRange:matchRange]) {
                [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:matchRange];
            }
           else {
                [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:matchRange];
            }
            [attributedString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:matchRange];
        }

//当match匹配为电话号码时设置其attribute
     if ([match resultType] == NSTextCheckingTypePhoneNumber) {
            NSRange matchRange = [match range];   
            if ([self isIndex:index inRange:matchRange]) {
                [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:matchRange];
            }
            else {
                [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor yellowColor] range:matchRange];
            }
            [attributedString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:matchRange];
        }
 _textLabel.attributedText = attributedString;
}

- (BOOL)isIndex:(CFIndex)index inRange:(NSRange)range

{
    return index > range.location && index < range.location+range.length;
}

时间: 2024-10-13 16:02:50

NSTextCheckingResult类 ios自带识别电话号码,网址等的相关文章

iOS手势UIGestureRecognizer识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势) (转)

1.UIGestureRecognizer介绍 手势识别在iOS上非常重要,手势操作移动设备的重要特征,极大的增加了移动设备使用便捷性. iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了UIGestureRecognizer类.手势识别UIGestureRecognizer类是个抽象类,下面的子类是具体的手势,开发这可以直接使用这些手势识别. UITapGestureRecognizer UIPinchGestureRecognizer UIRotationGestureRecog

iOS身份证号码识别

一.前言 ??身份证识别,又称OCR技术.OCR技术是光学字符识别的缩写,是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术. ??因为项目需要,所以这些天查阅了相关资料,想在网上看看有没有大神封装的现成的demo可以用.但是无果,网上关于ocr这一块的资料很少,比较靠谱的都是要收费的,而且价格也不便宜.但是在天朝,收费感觉心里不爽,所以就决定自己研究一番. ??先上一个最终实现的效果(如果mac不是r

iOS自带TTS技术的实现即语音播报

文本转语音技术, 也叫TTS, 是Text To Speech的缩写. iOS如果想做有声书等功能的时候, 会用到这门技术. 一,使用iOS自带TTS需要注意的几点: iOS7之后才有该功能 需要 AVFoundation 库 AVSpeechSynthesizer: 语音合成器, 可以假想成一个可以说话的人, 是最主要的接口 AVSpeechSynthesisVoice: 可以假想成人的声音 AVSpeechUtterance: 可以假想成要说的一段话 二,代码示例, 播放语音 //语音播报

IOS Xcode 无法识别IOS device 突然发生的

今天 我用真机mini好好地 ,再想测试一下iphone 4  发生了意外 两个测试机都找不到设备了 但是 都在充电 还能连接 itune !!!! 我郁闷了 解决办法 是 Mac iTunes 重新更新  据说 itunes 有时候会犯病 影响Xcode  所以 得卸载 重新装 .然后就好使了. 心得:使用测试机 要正常插入 点击iTunes退出机器 . IOS Xcode 无法识别IOS device 突然发生的,布布扣,bubuko.com

iOS 自带定位功能

第一步:导入头文件 #import <CoreLocation/CoreLocation.h> #import <CoreLocation/CLLocationManagerDelegate.h> 第二步:设置代理 CLLocationManagerDelegate 第三步:创建一个属性 @property(nonatomic, strong) CLLocationManager *locationManager; 第四步:初始化     //定位服务管理对象初始化     _lo

ios 自带xml 解析,TBXMLParser解析

今天看了下苹果xml 解析,写了个小demo 心想还是 在博客上写点东西吧,毕竟很久很久都没有上来了 先上个效果图把 接下来 看下 工程目录图吧 本demo 分两种解析模式,一是苹果自带的, 首先先看下苹果自带的吧,工程文件为 NoteXMLParser 文件 ,另一种解析模式 是 NotesTBXMLParser文件 NoteXMLParser.h 文件代码如下 : // // NoteXMLParser.h // TestXML // // Created by choni on 14-5-

iOS 自带刷新功能

这里只介绍UIRefreshControl的使用方法,虽然EGO已经用得挺舒服的了,但是官方给的.毕竟还是蛮简单的 ================================================== UIRefreshControl 具有一个默认的高度和宽度 一旦创建,便自动管理.只有当用户用力刷新才能刷新,尤其...那朵菊花,用力越大,转速越快,感觉还不错哦.(瞬间...邪恶了) 下面介绍一下如何使用:     self.refreshControl = [[UIRefres

IOS自带输入法中文不触发KEYUP事件导致vue双向绑定错误问题

先上图: 可以看到输入框中的内容和弹出框的内容不一致, <input class="am-fr labRight" id="txcode" type="text" placeholder="请输入纳税人识别号" v-model="invBuyer.TaxCode" /> 文本框使用的是vue的v-model双向绑定,在android中是ok的,在IOS上不行, 导致问题出现的原因是IOS自带输入

支持视频流识别的移动端(Android、iOS)车牌识别

文章摘要:移动端(Android.iOS)车牌识别只需手机或pad扫一扫,即可快速识别车牌号码:支持超大角度识别车牌号:支持Android.iOS平台.手机ARM平台和PDA的X86架构:支持蓝牌.黄牌.挂车号牌.新军牌.警牌.新武警车牌.教练车牌.大使馆车牌.农用车牌.个性化车牌.港澳出入境车牌.澳台车牌.民航车牌.领馆车牌.新能源车牌等最全车牌,支持视频流识别和拍照识别两种识别模式...... 移动端(Android.iOS)车牌识别应用背景 随着汽车的爆炸式增长,停车位越来越紧缺,好多车主