在Python中字典根据多项规则排序的方法


Posted in Python onJanuary 21, 2019

我们做登录的时候经常会使用到,验证手机号是否正确、向手机发送验证码倒计时60s的问题,我们改如何解决呢?让我们一起来探讨一下吧。如下图:

首先,我们先说说判断手机号码是否正确的问题吧,我的想法是给字符串添加一个分类,然后写上这样的代码:
+ (BOOL)valiMobile:(NSString *)mobile{
        if (mobile.length != 11){
            //判断手机号码是否为11位
            return NO;
            }else{
                //使用正则表达式的方法来判断手机号
/**
* 移动号段正则表达式
  */
                NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
/**
* 联通号段正则表达式
*/
                 NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
/**
* 电信号段正则表达式
*/
                NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
//初始化NSPredicate对象
                NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
//与具体对象进行筛选判断, 返回为BOOL值
                BOOL isMatch1 = [pred1 evaluateWithObject:mobile];
                NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
                BOOL isMatch2 = [pred2 evaluateWithObject:mobile];
                NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
            BOOL isMatch3 = [pred3 evaluateWithObject:mobile];
                if (isMatch1 || isMatch2 || isMatch3) {
                    return YES;
                    }else{
                return NO;
            }
        }
}
如果大家对于NSPredicate的用法有些疑问的话可以看看这篇文章:http://www.jianshu.com/p/d4098bc9488d下面再来说一说验证码倒计时的问题,1、我给button创建了一个分类2、设定button上的文字,并记录倒计时的总时长,然后开一个定时器,并且关闭button的点击事件3、定时器中将总时间缩减,并且设置button的文字,然后做一个判断,判断时间是否归为0,如果为0 就释放定时器,然后设置button上的文字,然后打开用户交互。代码如下:.h文件中
#import@interface UIButton (BtnTime)
/**
按钮倒计时的问题
@param countDownTime 倒计时的时间(分钟)
*/
- (void)buttonWithTime:(CGFloat)countDownTime;
@end
.m文件中
#import "UIButton+BtnTime.h"
/** 倒计时的显示时间 */
static NSInteger secondsCountDown;
/** 记录总共的时间 */
static NSInteger allTime;
@implementation UIButton (BtnTime)
- (void)buttonWithTime:(CGFloat)countDownTime {
self.userInteractionEnabled = NO;
secondsCountDown = 60 * countDownTime;
allTime = 60 * countDownTime;
[self setTitle:[NSString stringWithFormat:@"%lds后重新获取",secondsCountDown] forState:UIControlStateNormal];
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeFireMethod:) userInfo:nil repeats:YES];
}
-(void)timeFireMethod:(NSTimer *)countDownTimer{
//倒计时-1
secondsCountDown--;
//修改倒计时标签现实内容
[self setTitle:[NSString stringWithFormat:@"%lds后重新获取",secondsCountDown] forState:UIControlStateNormal];
//当倒计时到0时,做需要的操作,比如验证码过期不能提交
if(secondsCountDown == 0){
[countDownTimer invalidate];
[self setTitle:@"重新获取" forState:UIControlStateNormal];
secondsCountDown = allTime;
self.userInteractionEnabled = YES;
}
}
@end

代码已经上传到github上去了,地址:https://github.com/zhangyqyx/Countdown

作者:谁遇而安
链接:https://www.jianshu.com/p/d9fbfd8bff75
?碓矗杭蚴?br /> 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Python 相关文章推荐
Python编写屏幕截图程序方法
Feb 18 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
May 22 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
python时间序列按频率生成日期的方法
May 14 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
Python爬虫入门有哪些基础知识点
Jun 02 Python
pycharm 关掉syntax检查操作
Jun 09 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Jun 07 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 #Python
pycharm远程开发项目的实现步骤
Jan 20 #Python
对python中类的继承与方法重写介绍
Jan 20 #Python
python 格式化输出百分号的方法
Jan 20 #Python
python自定义函数实现一个数的三次方计算方法
Jan 20 #Python
对python:循环定义多个变量的实例详解
Jan 20 #Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 #Python
You might like
PHP连接MongoDB示例代码
2012/09/06 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
python中关于for循环的碎碎念
2017/06/30 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
广告学专业推荐信范文
2013/11/23 职场文书
生日邀请函范文
2014/01/13 职场文书
商场消防演习方案
2014/02/12 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
欢度春节标语
2014/07/01 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
财产分割协议书范本
2014/11/03 职场文书
检讨书模板
2015/01/29 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
贫困证明书范文
2015/06/16 职场文书