在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实现定制交互式命令行的方法
Jul 03 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
Python中Django框架下的staticfiles使用简介
May 30 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
用Python shell简化开发
Aug 08 Python
numpy.random模块用法总结
May 27 Python
详解python中自定义超时异常的几种方法
Jul 29 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
Django实现后台上传并显示图片功能
May 29 Python
python中opencv实现图片文本倾斜校正
Jun 11 Python
使用scrapy实现增量式爬取方式
Jun 21 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中的串行化变量和序列化对象
2006/09/05 PHP
drupal 代码实现URL重写
2011/05/04 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
php使用百度天气接口示例
2014/04/22 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
简述php环境搭建与配置
2016/12/05 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
jquery操作 iframe的方法
2014/12/03 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
React组件refs的使用详解
2018/02/09 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python三元运算符实现方法
2013/12/17 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
社团活动总结书
2014/06/27 职场文书
公司外出活动方案
2014/08/14 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
django 认证类配置实现
2021/11/11 Python
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang