在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代码
Mar 13 Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
django session完成状态保持的方法
Nov 27 Python
详解Python的三种可变参数
May 08 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
Python绘制热力图示例
Sep 27 Python
Python实现元素等待代码实例
Nov 11 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 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 微信扫码支付源代码(推荐)
2016/11/03 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
jQuery弹框插件使用方法详解
2020/05/26 jQuery
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python3爬虫全国地址信息
2019/01/05 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
如何基于python实现脚本加密
2019/12/28 Python
python序列类型种类详解
2020/02/26 Python
Pytorch转tflite方式
2020/05/25 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
database面试题
2013/03/28 面试题
临床医师专业个人自我评价
2014/01/08 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
廉政承诺书
2015/01/19 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
民主生活会主持词
2015/07/01 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python