内容简介:数值类型(金额)限制与判断
一般对于支付或者涉及数值输入时,都会判断输入是否符合规范。比如有这么一个需求,我希望能够限制输入的内容只能是两位小数的浮点型。那么这个时候我想到的就是两种办法,一种就是使用正则,一种就是监听输入内容进行判断。下面我将针对我自己的需求:限制输入小数位数以及整数位数进行判断。
代码写的有点不尽完美,但是已经满足自己的需求了。可灵活变通,一旦有完善的会及时更新代码。下面的代码直接放在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%,行业已成黑客乐土?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pattern Recognition and Machine Learning
Christopher Bishop / Springer / 2007-10-1 / USD 94.95
The dramatic growth in practical applications for machine learning over the last ten years has been accompanied by many important developments in the underlying algorithms and techniques. For example,......一起来看看 《Pattern Recognition and Machine Learning》 这本书的介绍吧!