在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中的readline()方法的使用
May 24 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
Python中is与==判断的区别
Mar 28 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
对python产生随机的二维数组实例详解
Dec 13 Python
python与字符编码问题
May 24 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
python合并多个excel文件的示例
Sep 23 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中4种常用的抓取网络数据方法
2015/06/04 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
php实现的双色球算法示例
2017/06/20 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
django之常用命令详解
2016/06/30 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
Python文件操作函数用法实例详解
2019/12/24 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
python如何支持并发方法详解
2020/07/25 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
水电工岗位职责
2014/02/12 职场文书
教师节促销活动方案
2014/02/14 职场文书
大学团日活动总结书
2015/05/11 职场文书
铁人观后感
2015/06/16 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
中秋晚会致辞
2015/07/31 职场文书
angular异步验证器防抖实例详解
2022/03/31 Javascript