判断输入金额,很完善

来源:互联网 发布:先导爱知 编辑:程序博客网 时间:2024/06/05 22:41
//判断输入金额
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
   if ([textField.textrangeOfString:@"."].location==NSNotFound) {
       isHaveDian =NO;
    }
   if ([textField.textrangeOfString:@"0"].location==NSNotFound) {
       isFirstZero =NO;
    }
   
   if ([stringlength]]]>0)
    {
       unichar single=[stringcharacterAtIndex:0];//当前输入的字符
       if ((single >='0' && single<='9') || single=='.')//数据格式正确
        {
           
           if([textField.textlength]==0){
               if(single =='.'){
                   //首字母不能为小数点
                   returnNO;
                }
               if (single =='0') {
                   isFirstZero =YES;
                   returnYES;
                }
            }
           
           if (single=='.'){
               if(!isHaveDian)//text中还没有小数点
                {
                   isHaveDian=YES;
                   returnYES;
                }else{
                   returnNO;
                }
            }elseif(single=='0'){
               if ((isFirstZero&&isHaveDian)||(!isFirstZero&&isHaveDian)) {
                   //首位有0.0.01)或首位没0.10200.00)可输入两位数的0
                   if([textField.textisEqualToString:@"0.0"]){
                       returnNO;
                    }
                   NSRange ran=[textField.textrangeOfString:@"."];
                   int tt=(int)(range.location-ran.location);
                   if (tt <=2){
                       returnYES;
                    }else{
                       returnNO;
                    }
                }elseif (isFirstZero&&!isHaveDian){
                   //首位有0.不能再输入0
                   returnNO;
                }else{
                   returnYES;
                }
            }else{
               if (isHaveDian){
                   //存在小数点,保留两位小数
                   NSRange ran=[textField.textrangeOfString:@"."];
                   int tt= (int)(range.location-ran.location);
                   if (tt <=2){
                       returnYES;
                    }else{
                       returnNO;
                    }
                }elseif(isFirstZero&&!isHaveDian){
                   //首位有0没点
                   returnNO;
                }else{
                   returnYES;
                }
            }
        }else{
           //输入的数据格式不正确
           returnNO;
        }
    }else{
       returnYES;
    }
}
原创粉丝点击