在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之re操作方法(详解)
Jun 14 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
numpy ndarray 取出满足特定条件的某些行实例
Dec 05 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
python能在浏览器能运行吗
Jun 17 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 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
YB217、YB235、YB400浅听
2021/03/02 无线电
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
PHP goto语句用法实例
2019/08/06 PHP
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
详解Python中的array数组模块相关使用
2016/07/05 Python
python字典DICT类型合并详解
2017/08/17 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
学子宴答谢词
2014/01/25 职场文书
银行批评与自我批评
2014/02/10 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang