在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网络编程学习笔记(六):Web客户端访问
Jun 09 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
Python实现的双色球生成功能示例
Dec 18 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
Python中使用遍历在列表中添加字典遇到的坑
Feb 27 Python
python re.sub()替换正则的匹配内容方法
Jul 22 Python
jupyter notebook实现显示行号
Apr 13 Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 Python
Python3的进程和线程你了解吗
Mar 16 Python
Python之matplotlib绘制饼图
Apr 13 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 神盾解密
2014/06/08 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
vue.js的安装方法
2017/05/12 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
Python 文件管理实例详解
2015/11/10 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
机械专业应届生求职信
2013/12/12 职场文书
新年晚会主持词
2014/03/24 职场文书
个人向公司借款协议书
2014/10/09 职场文书
涨价通知怎么写
2015/04/23 职场文书
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers