在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中使用xlrd、xlwt操作excel表格详解
Jan 29 Python
详解Python编程中包的概念与管理
Oct 16 Python
python 循环遍历字典元素的简单方法
Sep 11 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
Pandas 同元素多列去重的实例
Jul 03 Python
图文详解python安装Scrapy框架步骤
May 20 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
python集合是否可变总结
Jun 20 Python
Python Web框架之Django框架cookie和session用法分析
Aug 16 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
Python hashlib常见摘要算法详解
Jan 13 Python
Python新手学习装饰器
Jun 04 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操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
php session 写入数据库
2016/02/13 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
大专自我鉴定范文
2013/10/23 职场文书
建筑设计专业求职自我评价
2014/03/02 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
教书育人演讲稿
2014/09/11 职场文书
房屋买卖协议样本
2014/11/16 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
校园广播稿范文
2015/08/19 职场文书
python中tkinter复选框使用操作
2021/11/11 Python
python装饰器代码解析
2022/03/23 Python
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers