在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 相关文章推荐
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
May 22 Python
Python实现求最大公约数及判断素数的方法
May 26 Python
Python中逗号的三种作用实例分析
Jun 08 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
简单了解python数组的基本操作
Nov 26 Python
python DataFrame转dict字典过程详解
Dec 26 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
Django限制API访问频率常用方法解析
Oct 12 Python
matplotlib之属性组合包(cycler)的使用
Feb 24 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
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
phpinfo的知识点总结
2019/10/10 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
Js四则运算函数代码
2012/07/21 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
Python去掉字符串中空格的方法
2014/03/11 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
python实现简单飞行棋
2020/02/06 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
大一军训感言
2014/01/09 职场文书
中秋晚会策划方案
2014/06/12 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
暑假打工感想
2015/08/07 职场文书
中秋节祝酒词
2015/08/12 职场文书