博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSTextCheckingResult类 ios自带识别电话号码,网址等
阅读量:5224 次
发布时间:2019-06-14

本文共 1998 字,大约阅读时间需要 6 分钟。

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;
}

 
 
 
 

转载于:https://www.cnblogs.com/MaybeQueen/p/4229053.html

你可能感兴趣的文章
configparse模块 | 文件配置 | Python (转载)
查看>>
C++中四种显示类型转换总结
查看>>
java线程池原理
查看>>
c++学习笔记2--constexpr,类型别名,auto
查看>>
LRU近期最少使用算法
查看>>
Sublime Text 2 插件
查看>>
Spring框架
查看>>
★色盲悖论正解!
查看>>
牛人们的博客地址
查看>>
[Codevs] 2492 上帝造题的七分钟2
查看>>
【Java编程思想 - 练习】吸血鬼数字
查看>>
【WP8】同步执行异步代码
查看>>
HDU1945 非常可乐(数论)
查看>>
Codeforces 997B Roman Digits(半打表)
查看>>
[JSOI2008] 火星人prefix
查看>>
POJ-3669
查看>>
/etc/security/limits.conf不生效
查看>>
Swing Jtable 添加checkbox列
查看>>
[Mybatis]Spring与Mybatis整合的MapperScannerConfigurer处理过程源码分析
查看>>
基于“MVC”框架集设计模式,利用 DBHelper实现查询数据库功能
查看>>