在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实现目录树生成示例
Mar 28 Python
python中threading超线程用法实例分析
May 16 Python
说一说Python logging
Apr 15 Python
Python使用functools实现注解同步方法
Feb 06 Python
python 构造三维全零数组的方法
Nov 12 Python
Python 面试中 8 个必考问题
Nov 16 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
python实现录制全屏和选择区域录屏功能
Feb 05 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 一元分词算法
2009/11/30 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
express 项目分层实践详解
2018/12/10 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python迭代器实例简析
2014/09/25 Python
Python的randrange()方法使用教程
2015/05/15 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
python3转换code128条形码的方法
2019/04/17 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
基于FME使用Python过程图解
2020/05/13 Python
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
函授本科自我鉴定
2014/02/04 职场文书
音乐教育感言
2014/03/05 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
电视节目策划方案
2014/05/16 职场文书
关于感谢信的范文
2015/01/23 职场文书
戒赌保证书
2015/05/11 职场文书
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
Python 绘制多因子柱状图
2022/05/11 Python