在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使用saltstack生成服务器资产清单
Mar 01 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
python快排算法详解
Mar 04 Python
python2.7 安装pip的方法步骤(管用)
May 05 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
Python用SSH连接到网络设备
Feb 18 Python
Python 数据结构之十大经典排序算法一文通关
Oct 16 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/11/19 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
详解vue axios二次封装
2018/07/22 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
java直接调用python脚本的例子
2014/02/16 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
接口中的方法可以是abstract的吗
2015/07/23 面试题
出纳试用期自我鉴定范文
2014/09/16 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
Java使用jmeter进行压力测试
2021/07/09 Java/Android