在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中文编码问题小结
Sep 28 Python
Python求两个list的差集、交集与并集的方法
Nov 01 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
python的Tqdm模块的使用
Jan 10 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
python模拟点击网页按钮实现方法
Feb 25 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
Python 实现将某一列设置为str类型
Jul 14 Python
OpenCV绘制圆端矩形的示例代码
Aug 30 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
单位速度在实战中的运用
2020/03/04 星际争霸
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
Python wordcloud库安装方法总结
2020/12/31 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
计算机应用职专应届生求职信
2013/11/12 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
外国人来华邀请函
2015/01/31 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
PHP策略模式写法
2021/04/01 PHP
解决Pytorch中关于model.eval的问题
2021/05/22 Python
Mysql 文件配置解析介绍
2022/05/06 MySQL
MySQL GTID复制的具体使用
2022/05/20 MySQL
Python中requests库的用法详解
2022/06/05 Python