在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利用beautifulSoup实现爬虫
Sep 29 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
Python中强大的命令行库click入门教程
Dec 26 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
python paramiko模块学习分享
Aug 23 Python
Python连接Redis的基本配置方法
Sep 13 Python
Pandas 按索引合并数据集的方法
Nov 15 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
python如何从键盘获取输入实例
Jun 18 Python
python基础详解之if循环语句
Apr 24 Python
Django基础CBV装饰器和中间件
Mar 22 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
一个颜色轮换的简单例子
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
jquery 表单取值常用代码
2009/12/22 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
民事诉讼授权委托书范文
2014/08/02 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
民事二审代理词
2015/05/25 职场文书
SQL Server内存机制浅探
2022/04/06 SQL Server
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS