iOS textField输入金额的限制,小数点前9位,后面两位

iOS textField输入金额的限制,小数点前9位,后面两位,如果不加小数点,最大位数是9位,加上小数点,最大位数是12位,超出最大位数可删除

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

// 判断是否输入内容,或者用户点击的是键盘的删除按钮

if (![string isEqualToString:@""]) {

NSCharacterSet *cs;

if ([textField isEqual:countTextField]) {

// 小数点在字符串中的位置 第一个数字从0位置开始

NSInteger dotLocation = [textField.text rangeOfString:@"."].location;

// 判断字符串中是否有小数点,并且小数点不在第一位

// NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在

// range.location 表示的是当前输入的内容在整个字符串中的位置,位置编号从0开始

if (dotLocation == NSNotFound && range.location != 0) {

// 取只包含“myDotNumbers”中包含的内容,其余内容都被去掉

/*

[NSCharacterSet characterSetWithCharactersInString:myDotNumbers]的作用是去掉"myDotNumbers"中包含的所有内容,只要字符串中有内容与"myDotNumbers"中的部分内容相同都会被舍去

在上述方法的末尾加上invertedSet就会使作用颠倒,只取与“myDotNumbers”中内容相同的字符

*/

cs = [[NSCharacterSet characterSetWithCharactersInString:NumbersWithDot] invertedSet];

if (range.location >= 9) {

NSLog(@"单笔金额不能超过亿位");

if ([string isEqualToString:@"."] && range.location == 9) {

return YES;

}

return NO;

}

}else {

cs = [[NSCharacterSet characterSetWithCharactersInString:NumbersWithoutDot] invertedSet];

}

// 按cs分离出数组,数组按@""分离出字符串

NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

BOOL basicTest = [string isEqualToString:filtered];

if (!basicTest) {

NSLog(@"只能输入数字和小数点");

return NO;

}

if (dotLocation != NSNotFound && range.location > dotLocation + 2) {

NSLog(@"小数点后最多两位");

return NO;

}

if (textField.text.length > 11) {

return NO;

}

}

}

return YES;

}

时间: 2024-10-11 13:09:17

iOS textField输入金额的限制,小数点前9位,后面两位的相关文章

iOS textfield输入长度限制汉字无效

-(void)textFiledEditChanged:(NSNotification *)obj{ UITextField *textField = (UITextField *)obj.object;        NSString *toBeString = textField.text;    NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式    if ([lang isEq

iOS 追踪限制textfield输入位数

实现效果:强制用户只能输入16位数,这里是运用在信用卡号码的输入. 输入字符数大于16,把字的颜色设为黑色,且不管继续输入什么内容,只取前16位: 若小于16位,把字的颜色设为红色,且设置"无效". -(void)viewDidLoad{ [super viewDidLoad]; // 每隔0.1秒检查输入框 [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(checkCardInfoI

金融支付 输入金额 小数点后两位 ,首位输入小数点

封装 如下工具类 在EditText 的addTextChangListener( )方法内的onTextChangge方法内,调用工具内即可. 工具类如下 /** * onTextChanged * @param sequence (CharSequenc s * @param editText */ public static void formatDot(CharSequence sequence,EditText editText){ String s = sequence.toStri

IOS TextField属性

原文请链接:http://blog.csdn.net/tskyfree/article/details/8121915/ //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef en

UITextField 限制输入金额(项目中遇到判断输入金额)

下面这个限制输入金额限制得很死: 1.要求用户输入首位不能为小数点; 2.小数点后不超过两位,小数点无法输入超过一个; 3.如果首位为0,后面仅能输入小数点: 4.输入金额不超过11位. 1 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 2 { 3 if (textField.text.lengt

TextFiled 中输入金额

要求: 输入的金额不能超过六位, 小数点后面只能输入两位小数 如果 textFIled  中第一位输入的是0 ,后面必须输入小数点,否则禁止输入 用到 textfiled代理方法 #pragma mark ---- textFiledDelegate ---- - (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)st

iOS中UITextField输入判断小数点后两位

在输入金额的UITextField中,要给予三个规则的判断 1. 只能输入数字(可以通过设置键盘类型为Decimal Pad) 2. 小数点只能有一个 3. 小数点后最多有两位数字 (可以通过正则表达式或者长度判断) 2. 和3. 的代码 (首先引入UITextFieldDelegate,指定代理为自己) - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacem

输入金额,SpannableStringBuilder,Dialog无主题和透明背景的使用

转载请注明出处:http://blog.csdn.net/forwardyzk/article/details/43308573 整理了开发汇中遇到的一些小细节. 1.在EditText中输入金额,只能输入正确的金额格式,例如:0.01,0.1,0,123,123.0,123.01 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too

SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理

原文:SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理 SQL Server 字段类型 decimal(18,6)小数点前是几位? 不可否认,这是一个很低级的问题.... 为什么会问这么低级的问题? 由于这个问题,导致一个数据导入的SP执行失败....以至于困扰了我好几个小时.... 事情是这样的... 公司总部上了一套Oracle的ERP,我们系统中有些数据要从里面取,比如Supplier,Product等. Oracle会导出数据文件,我