<span id='su9sw'></span>

      <i id='su9sw'><div id='su9sw'><ins id='su9sw'></ins></div></i><fieldset id='su9sw'></fieldset>

      1. <tr id='su9sw'><strong id='su9sw'></strong><small id='su9sw'></small><button id='su9sw'></button><li id='su9sw'><noscript id='su9sw'><big id='su9sw'></big><dt id='su9sw'></dt></noscript></li></tr><ol id='su9sw'><table id='su9sw'><blockquote id='su9sw'><tbody id='su9sw'></tbody></blockquote></table></ol><u id='su9sw'></u><kbd id='su9sw'><kbd id='su9sw'></kbd></kbd>
        1. <dl id='su9sw'></dl>

          <ins id='su9sw'></ins>

          <i id='su9sw'></i>

        2. <acronym id='su9sw'><em id='su9sw'></em><td id='su9sw'><div id='su9sw'></div></td></acronym><address id='su9sw'><big id='su9sw'><big id='su9sw'></big><legend id='su9sw'></legend></big></address>

            <code id='su9sw'><strong id='su9sw'></strong></code>

            简单易用 的 iOS 分类 UITextView & UITextField & UIControl & NSStrin

            • 时间:
            • 浏览:8
            • 来源:124软件资讯网

              题目显得很屌丝  ,搞那么长、长就长一点吧  ,这样可能利便搜索 。

              一、先看一张图

              神情的 iOS 分类

              是的、就这三个分类:NSString+Regex  ,UITextField+HG  ,UITextView+HG  。接下来就对他们做一个简朴的先容  。

              二、怎样获取

              在之前、已经放到 pod 上  。以是获取方式有两种:

              1、直接到这里Categorys去检察 。

              2、通过 pod 方式拉取:

              pod 'HGCategorys'

              温馨提醒:一样平常 Podfile 应该怎样去建立 ?许多偕行是这样的下令:vim Podfile  ,实在最专业&利便的建立姿势是这样的:pod init  。

              看了代码之后会发现实现是很简朴的 ,不仅代码简朴、功效也很简朴  。存在、就是真理 。再简朴、也一起看一看有何用途吧  。

              三、有何功效

              1、NSString+Regex

              先看分类名 Regex  ,正则表达式的意思  。那么这部门的功效就很明确了  ,主要就是一个字符串的匹配  。在开发的历程中对 正则表达式 的使用险些是不难的  ,可是怎样将差别的功效整合在一起  ,这生怕是一个问题  。接下来看一看这内里到底是怎样实现的(只看.h 文件中的内容)  。

              1.1 枚举界说

              详细界说如下:

              // 基本匹配 : 数字, 汉字, 字符, 空格, 下划线, 点, @
              typedef NS_OPTIONS(NSUInteger, HGRegexType) {
                  HGRegexTypeNone      = 0 << 0, // 未知
                  HGRegexTypeDigital   = 1 << 0, // 数字
                  HGRegexTypeChinese   = 1 << 1, // 汉字
                  HGRegexTypeCharacter = 1 << 2, // 字符
                  HGRegexTypeSpace     = 1 << 3, // 空格
                  HGRegexTypeUnderline = 1 << 4, // 下划线
                  HGRegexTypeDot       = 1 << 5, // 点
                  HGRegexTypeAT        = 1 << 6, // @
              };

              关于这个枚举的界说的一大亮点就是 NS_OPTIONS  ,万万不要看成 NS_ENUM  ,这两种枚举在用法上是有很大区此外  。相比力而言 NS_OPTIONS 的功效比 NS_ENUM 还要强盛  。这里并不说我现在使用了 NS_OPTIONS 就吹嘘它强盛 ,而显得自己有多牛逼 。不是这样的、而是想说  ,对于OC 中的枚举一定要弄清晰这两种的差别  。在适当的时机使用适当的实现方式 ,才气让自己的代码越发合理、越发牛气  。

              实在苹果给我们提供了许多这样的枚举 ,好比 UIViewAutoresizingNSKeyValueObservingOptions 等等  。

              看到这里  ,应该能推测到 HGRegexType 的用途是什么了  。我不说、你不说  ,心里知道就可以了  。[偷笑 5 秒钟、思索一小时]

              1.2 提供的要领

              在上代码之前 ,先自我品评一下:所有的要领注释  ,没有对参数做先容 。这是在写代码历程中的大忌 ,在 .m 文件中可以不用、可是在 .h 文件中不做注释 ,这一定是差池的  。由于代码是3个月前上传的  ,也不想去更新了  。

              直接看代码:

              /**
               * 通过 pattern 举行匹配
               */
              - (BOOL)hg_regexMatchWithPattern:(NSString*)pattern;
              
              /**
               * 基本匹配: 是否支持空字符串返回为YES的情形
               */
              - (BOOL)hg_regexMatchWithType:(HGRegexType)rType returnWhenEmpty:(BOOL)empty;

              看过代码的你应该知道 ,现实提供的要领不止以上的两个  。可是没有关系 ,只要明确了这两个要领  ,其它要领看到就秒懂了  。接下来细说一下这两个要领  。

              /**
               * 通过 pattern 举行匹配
               */
              - (BOOL)hg_regexMatchWithPattern:(NSString*)pattern;

              当你看到这个要领  ,凭据你多年的开发履历  ,再加上我那么屌丝的注释  ,你可能会这样的去用:

              // 匹配的条件
              NSString* pattern = @".";
              // 即将匹配的字符串
              NSString* strTEXT = @"CoderHG.";
              // 匹配效果
              BOOL result = [hg_regexMatchWithPattern:pattern];
              
              // 打印
              if (result) {
                  NSLog(@"有点");
              } else {
                  NSLog(@"没点");
              }

              毫无保留的以为 strTEXT 中有一个点(.)  ,以是效果 result 的值是 YES  ,打印的是 有点  。实在不是这样  ,这里的效果是 NO  。我的这个要领的意思是要 完全匹配 才算 YES  ,由于我之前设计这个匹配功效的初衷是:一个字符串中只能只包罗 pattern 中的字符  ,若是多了 ,就算失败  。

              以是、以上若是想要让 strTEXT 完全匹配乐成 ,只能是将 pattern 改成这样 ^[a-zA-Z.]+$ ,意思是 strTEXT 中只能泛起字符与点(.)的情形下才气乐成  ,多了  ,都是失败  。显然 strTEXT 中除了点(.)另有其它  ,以是为 NO 。

              这样的功效  ,一样平常用于什么样的地方呢 ?比力常用的地方就是  ,密码验证  。往往会有这样的要求:有且只能用字符、数字与下划线  。以是就可以弄弄成这样的:

              // 匹配的条件
              NSString* pattern = @"^[\\da-zA-Z_]+$";
              // 即将匹配的字符串
              NSString* strTEXT = @"CoderHG123";
              // 匹配效果
              BOOL result = [strTEXT hg_regexMatchWithPattern:pattern];
              
              // 打印
              if (result) {
                  NSLog(@"%@ 中只包罗数字,字符与下划线", strTEXT);
              } else {
                  NSLog(@"%@ 中除了包罗数字,字符与下划线,另有其它字符", strTEXT);
              }

              若是 strTEXT 中还包罗了 数字,字符与下划线 之外的字符  ,那么就返回 NO  。

              那么问题又来了  ,每次都要去写 pattern 这样的正则表达式  ,还贫苦啊 。是的  ,简直是很贫苦的  。接下来看另外一个要领 。

              /**
               * 基本匹配: 是否支持空字符串返回为YES的情形
               */
              - (BOOL)hg_regexMatchWithType:(HGRegexType)rType returnWhenEmpty:(BOOL)empty;

              这个要领中  ,终于使用上谁人枚举(HGRegexType)了 ,看了上的所有诠释 ,应该都知道这个 rType 怎样传值了 。可是后面的 empty 是怎么回事么  ?主要是为了处置惩罚给空字符串(@"")而准备的  。若是是空字符串(@"")的话  ,是算匹配乐成照旧匹配失败呢  。主要照旧要看心情  ,差池、主要照旧要看需求  。 empty 传什么  ,在若是是空字符串(@"")的时间就返回什么  。

              那么我们就可以来用一下了  ,若是一个需求是这样的:一个字符串只能包罗字母、数字与下划线 ,而且若是当前字符串为空(@"")的时间  ,返回为 YES  。那么就可以这样弄了:

              // 即将匹配的字符串
              NSString* strTEXT = @"CoderHG123";
              
              // 匹配的条件 数字 | 字母 | 下划线
              HGRegexType rType = HGRegexTypeDigital | HGRegexTypeCharacter | HGRegexTypeUnderline;
              // 匹配效果
              BOOL result = [strTEXT hg_regexMatchWithType:rType returnWhenEmpty:YES];
              
              // 打印
              if (result) {
                  NSLog(@"%@ 中只包罗数字,字符与下划线", strTEXT);
              } else {
                  NSLog(@"%@ 中除了包罗数字,字符与下划线,另有其它字符", strTEXT);
              }

              这样看起来  ,就清晰了许多  。到现在为止 ,NSString+Regex 部门就先容竣事了  ,希望能对你有所资助  。

              欲知更多精彩 ,请看下面剖析  。

              2、UITextField+HG