我是靠谱客的博主 健壮画板,最近开发中收集的这篇文章主要介绍判断输入金额,很完善,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//判断输入金额
- ( BOOL )textField:( UITextField *)textField shouldChangeCharactersInRange:( NSRange )range replacementString:( NSString *)string{
    if ([textField. text rangeOfString : @"." ]. location == NSNotFound ) {
        isHaveDian = NO ;
    }
    if ([textField. text rangeOfString : @"0" ]. location == NSNotFound ) {
        isFirstZero = NO ;
    }
   
    if ([string length ]]]> 0 )
    {
        unichar single=[string characterAtIndex : 0 ]; // 当前输入的字符
        if ((single >= '0' && single<= '9' ) || single== '.' ) // 数据格式正确
        {
           
            if ([textField. text length ]== 0 ){
                if (single == '.' ){
                    // 首字母不能为小数点
                    return NO ;
                }
                if (single == '0' ) {
                    isFirstZero = YES ;
                    return YES ;
                }
            }
           
            if (single== '.' ){
                if (! isHaveDian ) //text 中还没有小数点
                {
                    isHaveDian = YES ;
                    return YES ;
                } else {
                    return NO ;
                }
            } else if (single== '0' ){
                if (( isFirstZero && isHaveDian )||(! isFirstZero && isHaveDian )) {
                    // 首位有 0 . 0.01 )或首位没 0 . 10200.00 )可输入两位数的 0
                    if ([textField. text isEqualToString : @"0.0" ]){
                        return NO ;
                    }
                    NSRange ran=[textField. text rangeOfString : @"." ];
                    int tt=( int )(range. location -ran. location );
                    if (tt <= 2 ){
                        return YES ;
                    } else {
                        return NO ;
                    }
                } else if ( isFirstZero &&! isHaveDian ){
                    // 首位有 0 . 不能再输入 0
                    return NO ;
                } else {
                    return YES ;
                }
            } else {
                if ( isHaveDian ){
                    // 存在小数点,保留两位小数
                    NSRange ran=[textField. text rangeOfString : @"." ];
                    int tt= ( int )(range. location -ran. location );
                    if (tt <= 2 ){
                        return YES ;
                    } else {
                        return NO ;
                    }
                } else if ( isFirstZero &&! isHaveDian ){
                    // 首位有 0 没点
                    return NO ;
                } else {
                    return YES ;
                }
            }
        } else {
            // 输入的数据格式不正确
            return NO ;
        }
    } else {
        return YES ;
    }
}

最后

以上就是健壮画板为你收集整理的判断输入金额,很完善的全部内容,希望文章能够帮你解决判断输入金额,很完善所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部