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

下面这个限制输入金额限制得很死:

  • 1.要求用户输入首位不能为小数点;
  • 2.小数点后不超过两位,小数点无法输入超过一个;
  • 3.如果首位为0,后面仅能输入小数点;
  • 4.输入金额不超过11位。

1 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
 2 {
 3     if (textField.text.length > 10) {
 4         return range.location < 11;
 5     }else{
 6         BOOL isHaveDian = YES;
 7         if ([textField.text rangeOfString:@"."].location==NSNotFound) {
 8             isHaveDian=NO;
 9         }
10         if ([string length]>0)
11         {
12             unichar single=[string characterAtIndex:0];//当前输入的字符
13
14             if ((single >=‘0‘ && single<=‘9‘) || single==‘.‘)//数据格式正确
15             {
16                 //首字母不能为小数点
17                 if([textField.text length]==0){
18                     if(single == ‘.‘){
19                         [textField.text stringByReplacingCharactersInRange:range withString:@""];
20                         return NO;
21
22                     }
23                 }
24                 if([textField.text length]==1 && [textField.text isEqualToString:@"0"]){
25                     if(single != ‘.‘){
26                         [textField.text stringByReplacingCharactersInRange:range withString:@""];
27                         return NO;
28
29                     }
30                 }
31                 if (single==‘.‘)
32                 {
33                     if(!isHaveDian)//text中还没有小数点
34                     {
35                         isHaveDian=YES;
36                         return YES;
37                     }else
38                     {
39                         [textField.text stringByReplacingCharactersInRange:range withString:@""];
40                         return NO;
41                     }
42                 }
43                 else
44                 {
45                     if (isHaveDian)//存在小数点
46                     {
47                         //判断小数点的位数
48                         NSRange ran=[textField.text rangeOfString:@"."];
49                         NSInteger tt=range.location-ran.location;
50                         if (tt <= 2){
51                             return YES;
52                         }else{
53                             return NO;
54                         }
55                     }
56                     else
57                     {
58                         return YES;
59                     }
60                 }
61             }else{//输入的数据格式不正确
62                 [textField.text stringByReplacingCharactersInRange:range withString:@""];
63                 return NO;
64             }
65         }
66         else
67         {
68             return YES;
69         }
70     }
71 }
时间: 2024-09-28 22:52:59

UITextField 限制输入金额(项目中遇到判断输入金额)的相关文章

MVC项目中如何判断用户是在用什么设备进行访问

使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为手机设备专门准备一套前端的页面.这样当用户使用普通电脑来访问的时候,我们的应用就向用户展示普通电脑的页面.当用户使用手机等移动设备来访问我们的系统的时候,我们就向用户展示手机设备的页面.但是这时候另一个问题出现了.如何判断用户在使用什么设备访问我们的应用?是使用手机还是普通电脑? 网上能查到的不同的

shell中怎么判断输入的是否是数字

在shell中我们经常要面临一个问题就是,怎么判断我交互式的前端,使用者输入的是否是数字呢?这里小编我也就会两种方法,所以今天就在这说一说 第一种:sed格式 首先:我们先(在命令行直接输出模拟一下,如果都正确再在shell脚本中进行书写.)直接echo输出一下 echo "111asd" 第一步:思想 然后我们就要想一下我们要说用sed判断,但是sed的最主要的功能是什么?替换!!!当然是替换,既然是替换那么我们能不能直接把echo输出的数字直接替换掉,然后看这个输出还剩下什么呢?如

线扫相机项目中定量判断机构运动是否匀速的方法

线扫相机的原理:线扫相机一般一次只拍摄一条线(线宽通常是1个像素),在机构运动的过程中,线扫相机不断地拍摄线,于是“聚线成面”,这就是线扫相机成像的原理. 线扫相机的原理决定了,它所拍摄的物体必须要运动.机构运动的话,就存在机构的速度是否和线扫相机采集的速度匹配的问题. 将对机构运动速度的要求进行拆分的话,其实就是如下两点: ① 运动速度必须与线扫相机的工作行频(即采集速度)相匹配. ② 机构的运动速度最好是匀速,或者十分接近匀速. 如果机构速度过快,最后的图像在运动方向上被压缩:如果机构速度过

高性能凑票工具:从给定金额列表中计算满足目标金额的所有组合

目录 一.需求 二.实现思路 三.最终方案:动态规划 四.使用方式 1.直接调用代码(适合用来开发自己的软件) 2.命令行模式(适合不会编程的人使用) 五.总结 一.需求 公司有一个比较坑爹的报销方案,需要根据一堆碎的发票中,凑出一个目标金额,要求误差在1块钱以内 缺点:每次人肉去对比,浪费大量的时间. 大概是这样的,新建一个excel表格,将所有的金额录入,然后自己勾选发票,直到目标金额出现,如下图 二.实现思路 最差方案:全组和 使用全组合,搜索所有组合方案,遍历满足的结果输出,时间复杂度为

判断输入信息是否为空

在机房收费系统中,我们需要对文本框和组合框重复进行判断,确保不为空:该判断有两种情况,第一种,判断窗体中所有文本框组合框是否为空,第二种,判断一部分文本框,组合框是否为空.对于卡号和学号等我们需要判断用户输入的是否是数字,几乎每个窗体都需要进行相类似的判断,一个一个去写,熟悉了代码没错,可是,这个方法似乎不是那么聪明哈,这个时候,我们就可以定义一个类,专门用来进行判断,使用该功能的窗体直接调用类中的方法即可.接下来,简单介绍一下,该如何实现. 首先,判断窗体中所有文本框.组合框是否为空: <sp

python学习——如何判断输入是数字

笨办法学python第35节 该节主要是讲分支与函数,主要遇到的问题是python中如何判断输入是数字. 首先原代码如下: from sys import exit def gold_room(): print "This room is full of gold. How much do you take?" next = raw_input("> ") if "0" in next or "1" in next: h

iOS开发中手机号码和价格金额有效性判断及特殊字符的限制

在实际开发过程中,经常会遇到些不能让用户随便地输入手机号码,对输入的手机号码的正确判断:有些输入框只能输入数字,不能输入字母或特殊字符:还有些如价格金额之类的就只能输入数字和小数点且小数点后面保留两位. ///// 手机号码的有效性判断//检测是否是手机号码- (BOOL)isMobileNumber:(NSString *)mobileNum{    /**     * 手机号码     * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159

Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数,需要的朋友可以参考下 $#代表了命令行的参数数量,可以看以下实例: 复制代码 代码如下: if [ $# != 1 ] ; then echo "USAGE: $0 TABNAME" echo " e.g.: $0 CDR_CALL_20040701" exit 1; f

C语言的字符串转为OC中的字符串,控制台输入用户名和密码,判断输入的用户名是否是@“Frank”, 密码 是否是 @“lanou”, 如果用户名和密码都正确,则输出登录成功, 否则输出登录失败.

char name[20] = "";存储用户名 char code[20] = "";存储密码 printf("请输入用户名与密码"); scanf("%s%s", name, code); NSString *str1 = [NSString stringWithFormat:@"%s", name ]; NSString *str2 =[NSString stringWithFormat:@"