zoukankan      html  css  js  c++  java
  • 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;

    }

  • 相关阅读:
    统一回复《怎么学JavaScript?》
    nodejs配置简单HTTP服务器
    web跨域解决方案
    JavaScript 调试小技巧
    我从编程总结的 22 个经验
    Sublime Text 3103 Crack 破解 注册码(亲测有效)
    mstsc 远程序桌面登录的 c#开发
    突然顿悟的Javascript中的this
    解决Electron加载带jquery的项目报错问题
    ES6+ 开发 React 组件
  • 原文地址:https://www.cnblogs.com/dududuzhaoji/p/5732482.html
Copyright © 2011-2022 走看看