现在的位置: 首页 > 综合 > 正文

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

2018年04月20日 ⁄ 综合 ⁄ 共 1128字 ⁄ 字号 评论关闭

需求抽象:

现在有一段字符串

{"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"];
            }

结语:

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

抱歉!评论已关闭.