在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中的localtime()方法使用详解
May 22 Python
python友情链接检查方法
Jul 08 Python
Python中将字典转换为列表的方法
Sep 21 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 Python
Python正则表达式知识汇总
Sep 22 Python
教你用Python写安卓游戏外挂
Jan 11 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
Python 通配符删除文件的实例
Apr 24 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 Python
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 Python
python flappy bird小游戏分步实现流程
Feb 15 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 Session变量不能传送到下一页的解决方法
2009/11/27 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
自我鉴定范文
2013/11/10 职场文书
党员党性分析材料
2014/02/17 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
说明书怎么写
2014/05/06 职场文书
爱护公共设施的标语
2014/06/24 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技