内容简介:数值类型(金额)限制与判断
一般对于支付或者涉及数值输入时,都会判断输入是否符合规范。比如有这么一个需求,我希望能够限制输入的内容只能是两位小数的浮点型。那么这个时候我想到的就是两种办法,一种就是使用正则,一种就是监听输入内容进行判断。下面我将针对我自己的需求:限制输入小数位数以及整数位数进行判断。
代码写的有点不尽完美,但是已经满足自己的需求了。可灵活变通,一旦有完善的会及时更新代码。下面的代码直接放在UITextField的 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 代理方法里面。
/**
* @author LvChanghui, 15-08-07 14:08:01
*
* 限制输入数字格式(整数位数以及小数位数)
*
* @param currentStr 当前文本框的字符串
* @param nextStr 当前输入的字符
* @param range 输入字符的rang位置
* @param intLength 整数位置长度
* @param pointLength 小数位置长度
*
* @return 是否允许继续输入
*/
+ (BOOL)limitTheNumberString:(NSString *)currentStr
andNextString:(NSString *)nextStr
andRang:(NSRange)range
andIntLength:(NSUInteger)intLength
andPointLength:(NSUInteger)pointLength {
//拼接出最新的字符串
NSString *number = [self getResultString:currentStr andNextString:nextStr andRang:range];
if (number.length == 0) {
return YES;
}
//整數部份長度
NSString *zhengShu = [NSString stringWithFormat:@"%ld", [number integerValue]];
NSUInteger tempIntLength = zhengShu.length;
//小數部份長度,包括小數點
NSUInteger tempPointLength = [number substringFromIndex:tempIntLength].length;
if (tempIntLength > intLength || tempPointLength > pointLength+1) {
return NO;
}
//如果小數部份長度為0,說明限制數字為整數
if (pointLength == 0) {
if ([CheckTools isPureInt:number]) {
//如果没有小数点,但是第一位数字确是0开头,则不允许输入
if (![number containsString:@"."] && number.length > 1 && [[number substringToIndex:1] isEqualToString:@"0"]) {
return NO;
}
return YES;
}
return NO;
} else {
if ([CheckTools isPureFloat:number]) {
//如果没有小数点,但是第一位数字确是0开头,则不允许输入
if (![number containsString:@"."] && number.length > 1 && [[number substringToIndex:1] isEqualToString:@"0"]) {
return NO;
}
return YES;
}
return NO;
}
}
#pragma mark - 获取输入文本框字符串
+ (NSString *)getResultString:(NSString *)currentStr
andNextString:(NSString *)nextStr
andRang:(NSRange)range {
//拼接出最新的字符串
NSMutableString *string = currentStr.mutableCopy;
if (nextStr.length) {
[string insertString:nextStr atIndex:range.location];
} else {
[string replaceCharactersInRange:range withString:nextStr];
}
return string;
}
下面看看具体使用方式:
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (string.length) {
//设置整数部分最多2位,小数部分长度为0
BOOL b = [AmountTools limitTheNumberString:textField.text andNextString:string andRang:range andIntLength:2 andPointLength:0];
//如果需要实时获取文本框的值,可以使用下面的方法
NSString *tempStr = [AmountTools getResultString:textField.text andNextString:string andRang:range];
return b;
}
return YES;
}
再一次感谢您花费时间阅读这篇文章!
微博:@Danny_吕昌辉
博客: SuperDanny
谢谢你请我吃糖果
支付宝
微信
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- PHP 处理金额
- iOS 金额字符串格式化显示的方法
- iOS PHP – 从Apple IAP中提取金额
- 广东警方侦破黑客类案件100余宗 涉案金额2500余万元
- 【安全帮】3男子组成“联盟”盗虚拟货币 涉案金额6亿元
- 2018年被盗加密货币金额暴涨300%,行业已成黑客乐土?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
马尔可夫链:模型、算法与应用
Wai-Ki Ching、Ximin Huang / 陈曦 / 清华大学出版社 / 2015-6 / 39
《马尔可夫链:模型、算法与应用 应用数学译丛》讲述了马尔可夫链模型在排队系统、网页重要性排名、制造系统、再制造系统、库存系统以及金融风险管理等方面的最新应用进展.全书共安排8章内容,第1章介绍马尔可夫链、隐马尔可夫模型和马尔可夫决策过程的基本理论和方法,其余7章分别介绍马尔可夫链模型在不同领域中的应用. 《马尔可夫链:模型、算法与应用 应用数学译丛》可作为自动化、工业工程、统计学、应用数学以及管理......一起来看看 《马尔可夫链:模型、算法与应用》 这本书的介绍吧!