IOS之正则表达式

  在现阶IOS开发的样式越来越多,我们在开发APP的时候难免会遇到对用户的登录和注册进行操作,但是登录注册如果想要做的人性化少不了的就是校验,对当前用户的登录信息进行校验,如果满足要求我们会把用户注册的信息存入数据库如果不满足信息我们需要重新提示用户输入,涉及到校验我们离不开的就是正则表达式,下面我们一起来学习一下IOS如何操作正则表达式。

  1、正则表达式的语法我们在这里不详细介绍,如果对这个不熟悉的可以参考网站:http://www.cnblogs.com/light169/archive/2006/10/18/532347.html

  2、下面我们简单的定义一个正在表达式

 //正则表达式 匹配烟台本地电话号码
        NSString * pattern=@"^0535-\\d{6}$";
        
 //待匹配字符串
        NSString * str=@"0535-6062799";

  IOS中主要提供了两种方式处理正则表达式,一种是block的形式,一种是非block的形式下面我们逐个使用一下:

  方式一:

//定义并且初始化一个NSRegularExpression对象
        NSRegularExpression * reg=[[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionDotMatchesLineSeparators error:nil];

在初始化方法中有一个options参数这个参数是一个枚举类型,我们点击去api如下:

  我们简单翻译一下

   NSRegularExpressionCaseInsensitive              //不区分字母大小写的模式

   NSRegularExpressionAllowCommentsAndWhitespace  //忽略掉正则表达式中的空格和#号之后的字符

   NSRegularExpressionIgnoreMetacharacters        //将正则表达式整体作为字符串处理

   NSRegularExpressionDotMatchesLineSeparators    //允许.匹配任何字符,包括换行符  

   NSRegularExpressionAnchorsMatchLines            //允许^和$符号匹配行的开头和结尾

   NSRegularExpressionUseUnixLineSeparators        //设置\n为唯一的行分隔符,否则所有的都有效。

   NSRegularExpressionUseUnicodeWordBoundaries     //使用Unicode TR#29标准作为词的边界,否则所有传统正则表达式的词边界都有效

//调用matchesInString 方法返回匹配数组
 NSArray * array= [reg matchesInString:str options:NSMatchingReportCompletion range:NSMakeRange(0, [str length])];

当前方法中也是有options选项,我们点击去查看

  翻译成中文

  NSMatchingReportProgress         = 1 << 0, //找到最长的匹配字符串后调用block回调

   NSMatchingReportCompletion       = 1 << 1, //找到任何一个匹配串后都回调一次block

   NSMatchingAnchored               = 1 << 2, //从匹配范围的开始出进行极限匹配

   NSMatchingWithTransparentBounds  = 1 << 3, //允许匹配的范围超出设置的范围

   NSMatchingWithoutAnchoringBounds = 1 << 4  //禁止^和$自动匹配行还是和结束

 //数组里面装的是NSTextCheckingResult,我们将对象里面匹配范围打印出来,并且根据范围截取字符串
for (NSTextCheckingResult * result in  array) {
            NSLog(@"%@",NSStringFromRange(result.range));
            NSString * s=[str substringWithRange:result.range];
            NSLog(@"%@",s);
        }

这样我们就成功的讲字符串匹配出来了。

方式二:block方式参数选项跟上面结束的第一种相同,用法如下:

 [reg enumerateMatchesInString:str options:NSMatchingReportCompletion range:NSMakeRange(0, [str length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
              NSLog(@"%@",NSStringFromRange(result.range));
              NSString * s=[str substringWithRange:result.range];
              NSLog(@"%@",s);
        }];

  方式三:我们已经现在已经可以匹配简单的字符串了,但是我们在工作中有时候需要对字符串进行分割,例如字符串hello[你好]world[大家好]good,我们需要将字符串按照中文进行分割,要是实习这个功能我们借助第三方会达到事半功倍的效果下面我们用第三方RegexKitLite来实现这个功能。

  1、我们定义正则表达式

//用来匹配中文

        NSString * pattern=@"\\[[\\u4E00-\\u9FA5]+\\]";

 //待匹配字符串

        NSString * str=@"[哈哈]hello[你好]world[吗]good";

  2、将文件拖入项目

3、将该文件编译改为非arc

4、引入辅助库

5、用法比较简单,我们首先需要引入头文件,然后直接调用如下方法即可

#import "RegexKitLite.h"
  //用来获取分割后的字符串
  [str enumerateStringsSeparatedByRegex:pattern usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {
            NSLog(@"%@",*capturedStrings);
        }];

 //用来获取匹配的字符串
        [str enumerateStringsMatchedByRegex:pattern usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {
            NSLog(@"%@",*capturedStrings);
        }];

然后我们就可以开心的用正则表达式编程了。。

 

作者: 杰瑞教育
出处: http://www.cnblogs.com/jerehedu/ 
本文版权归烟台杰瑞教育科技有限公司和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在 Android 应用开发中,开发一款仿 OPPO 手机计算器的应用是极具实践价值的任务,它融合了 UI 设计、事件处理以及数学逻辑等多方面的技术要点。当前的“最新版仿 OPPO 手机计算器--android.rar”压缩包中,提供了该计算器应用的源代码,这为开发者深入学习 Android 编程提供了宝贵的资源。 UI 设计是构建此类计算器应用的基石。OPPO 手机的计算器界面以清晰的布局和良好的用户交互体验著称,其中包括数字键、运算符键以及用于显示结果的区域等关键元素。开发者需借助 Android Studio 中的 XML 布局文件来定义这些界面元素,可选用 LinearLayout、GridLayout 或 ConstraintLayout 等布局管理器,并搭配 Button 控件来实现各个按键功能。同时,还需考虑不同分辨率屏幕和设备尺寸的适配问题,这通常涉及 Density Independent Pixel(dp)单位的应用以及 Android 尺寸资源的合理配置。 事件处理构成了计算器的核心功能。开发者要在每个按钮的点击事件中编写相应的处理代码,通常通过实现 OnClickListener 接口来完成。例如,当用户点击数字键时,相应的值会被添加到显示区域;点击运算符键时,则会保存当前操作数并设定运算类型。而对于等号(=)按钮,需要执行计算操作,这往往需要借助栈数据结构来存储操作数和运算符,并运用算法解析表达式以完成计算。 数学逻辑的实现则是计算器功能的关键体现。在 Android 应用中,开发者可以利用 Java 内置的 Math 类,或者自行设计算法来完成计算任务。基本的加减乘除运算可通过简单的算术操作实现,而像求幂、开方等复杂运算则需调用 Math 类的相关方法。此外
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值