在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 16 Python
Python装饰器decorator用法实例
Nov 10 Python
Windows下python2.7.8安装图文教程
May 26 Python
python reduce 函数使用详解
Dec 05 Python
基于Python中求和函数sum的用法详解
Jun 28 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
Python计算信息熵实例
Jun 18 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
PyTorch预训练Bert模型的示例
Nov 17 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
php验证手机号码
2015/11/11 PHP
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
对比分析json及XML
2014/11/28 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
python图像处理之反色实现方法
2015/05/30 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
python实现网页录音效果
2020/10/26 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
中层干部岗位职责
2013/12/18 职场文书
国际会议邀请函范文
2014/01/16 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
管理提升方案
2014/06/04 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
会计师事务所实习证明
2014/11/16 职场文书
实习工作表现评语
2014/12/31 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书