iOS 开发中正则表达式实践(一)

来源:互联网 发布:算法导论 第三版 编辑:程序博客网 时间:2024/05/16 12:17

需求抽象:

现在有一段字符串

{"state":200,"error":"登录成功!","json":{"auid":"402888f54c12441e014c1246bdf90003"}}
现在需要提取auid后面的内容串,也就是402888f54c12441e014c1246bdf90003

分析:

在学习正则表达式之前,我使用的方式是:
用 Json 转字典,然后获取到 key.
对于这个,如果要拿到auid 对应的内容,我有两种方法:
1.做两次 json 转字典.
2.一次字典+一次字符串截取
但是这两种方法都有一些繁琐,于是想到了处理字符串的秘法—正则表达式

实现步骤:

1.拷贝原始字符串到正则工具(现在很多在线的正则测试工具,我使用的是 RegExRX)

2.测试匹配
如图
这里写图片描述
3.iOS 代码实现
注意:虽然正则本身是通用的,但是每种语言的处理不一样,像刚刚的表达式,在 iOS 中, \d 需要加转义字符 \
最终代码实现如下:

//regex//1.创建正则表达式对象,并指定正则表达式NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[\\d\\w]{10,}" options:0 error:nil];//2.获取特定字符串的范围NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];//3.截取特定的字符串if (match) { NSString* result = [string substringWithRange:match.range];DDLogVerbose(@"%@",result);//存储到偏好设置[[NSUserDefaults standardUserDefaults] setObject:result forKey:@"audi"];            }

结语:

这次只是简单的匹配,并且我和服务器端沟通好了,知道我要的数据格式一定是如何的.一切工作都应该从需求出发.没有必要也不可能做到面面俱到.

2 3