iOS判断输入的字符串是否是纯数字
主要用于判断输入到TextField的内容是不是数字,比如需要输入电话号码的时候。
网上查看了一些资料,一般都是通过协议。
以下内容来自:http://www.2cto.com/kf/201404/291718.html
今天项目中有个文本框需要只可以输入数字的需求,首先在.xib中将UITextField的Keyboard设置为Number Pad,但是使用时键盘会切回别的键盘无法对内容进行校验。通过神奇的百度我知道了通过以下方法可以解决这样的问题:
首先让.xib的viewController实现UITextFieldDelegate然后和想要校验的控件关联。
然后将下列代码粘贴到类中即可。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
return [self validateNumber:string];
}
- (BOOL)validateNumber:(NSString*)number {
BOOL res = YES;
NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@""];
int i = ;
while (i < number.length) {
NSString * string = [number substringWithRange:NSMakeRange(i, )];
NSRange range = [string rangeOfCharacterFromSet:tmpSet];
if (range.length == ) {
res = NO;
break;
}
i++;
}
return res;
}
还有一种方式,以下这种方式我还没有试过但是我找到了就分享出来吧:
1.定义常量以备使用
#define NUMBERS @"0123456789"
2.进行以下操作
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string
{
NSCharacterSet*cs;
cs = [[NSCharacterSetcharacterSetWithCharactersInString:NUMBERS] invertedSet];
NSString*filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
BOOLbasicTest = [string isEqualToString:filtered];
if(!basicTest) { UIAlertView* alert = [[UIAlertViewalloc] initWithTitle:@"提示"
message:@"请输入数字"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil]; [alert show];
returnNO; }
returnYES;
}
后面的方法可以判断任意字符串是不是纯数字
参考:http://blog.csdn.net/sike2008/article/details/8315202
1用正则表达式
//是否是纯数字
+ (BOOL)isNumText:(NSString *)str{
NSString * regex = @"(/^[0-9]*$/)";
NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isMatch = [pred evaluateWithObject:str];
if (isMatch) {
return YES;
}else{
return NO;
}
}
- (NSString *) trimming {
return [self stringByTrimmingCharactersInSet: [NSCharacterSetwhitespaceCharacterSet]];
}
//判断是不是纯数字
[NSCharacterSet decimalDigitCharacterSet];
if ([[textField.text stringByTrimmingCharactersInSet: [NSCharacterSetdecimalDigitCharacterSet]]trimming].length >) {
DLog(@"不是纯数字");
}else{
DLog(@"纯数字!");
}
说说自己的方法
我是参考的最后一种方式,把判断写在一个分类里面,方便要用的时候随时调用
经测试,完美可用
以下是分类中的代码
@implementation NSString (Number)
+ (BOOL)isNumber:(NSString *)string{
//判断是不是纯数字
[NSCharacterSet decimalDigitCharacterSet];
if ([[string stringByTrimmingCharactersInSet: [NSCharacterSet decimalDigitCharacterSet]] trimming].length >) {
return NO;
}else{
NSLog(@"纯数字!");
}
return YES;
}
- (NSString *) trimming {
return [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
}
然后就是在用的时候,导入分类的头文件,调用方法就可以了
比如说:
if (![NSString isNumber:self.phoneTextField.text]) {
[self showAlertWithTittle:@"提示" andMessage:@"电话只能是纯数字" andOKTittle:@"知道了"];
}
弹出提示框因为用得比较多,所以把简单的提示框单独写了一个方法
/**
* 显示弹出提示框
*
* @param tittle 标题
* @param message 提示消息
* @param OKTittle 确定按钮标题
*/
- (void)showAlertWithTittle:(NSString *)tittle andMessage:(NSString *)message andOKTittle:(NSString *)OKTittle{ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tittle message:message preferredStyle:UIAlertControllerStyleAlert];
// UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelTittle style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
// NSLog(@"点击了取消按钮");
// }];
UIAlertAction *OKAction = [UIAlertAction actionWithTitle:OKTittle style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; // [alertController addAction:cancelAction];
[alertController addAction:OKAction]; [self presentViewController:alertController animated:YES completion:nil]; }
其实,后面发现,写在各个.m文件中并不是很好,因为很多Controller都可能要用到这个方法,有兴趣的朋友可以试试把这个方法封装到一个类里面。
iOS判断输入的字符串是否是纯数字的更多相关文章
- C# 判断输入的字符串是否只包含数字和英文字母
/// <summary> /// 判断输入的字符串是否只包含数字和英文字母 /// </summary> /// <param name="input&quo ...
- C# .NET 判断输入的字符串是否只包含数字和英文字母
FROM : https://www.cnblogs.com/ilookbo/p/4828722.html /// <summary> /// 判断输入的字符串是否只包含数字和英文字母 ...
- swift 判断输入的字符串是否为数字
// 判断输入的字符串是否为数字,不含其它字符 func isPurnInt(string: String) -> Bool { let scan: Scanner = Scanner(stri ...
- Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!
0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),"都是汉字","含有非汉字字符") ...
- asp.net检查验证字符串是否为纯数字方法小结
原文 asp.net检查验证字符串是否为纯数字方法小结 在asp.net中验证字符串是不是为数字我们没有像php中那么多丰富的函数来直接使用,这里我整理了一些比较实例的验证字符串是否为纯数字方法代码 ...
- JAVA从字符串中提取纯数字
/** * 从字符串中提取纯数字 * @param str * @return */ public static String getNumeric(String str) { String regE ...
- 输入一个字符串,内有数字和非数字字符。例如:a123x456 17960 302tab5876。将其中连续的数字作为一个整数,依次存放到一维数组a中,例如123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。
题目内容:输入一个字符串,内有数字和非数字字符.例如:a123x456 17960 302tab5876.将其中连续的数字作为一个整数,依次存放到一维数组a中,例如123放在a[0],456放在a[1 ...
- Android EditText判断输入的字符串是否为数字(包含小数点)
有时候项目需要获取EditText所输入的字符串为纯数字(含小数),一般情况下在xml中设置EditText的的属性(我是直接设置digits为数字和小数点,即digits="0123456 ...
- C# 用正则表达式判断字符串是否为纯数字
Regex regex = new System.Text.RegularExpressions.Regex("^(-?[0-9]*[.]*[0-9]{0,3})$"); stri ...
随机推荐
- day5-WordCount
1. wordcount示例开发 1.1. wordcount程序整体运行流程示意图 map阶段: 将每一行文本数据变成<单词,1>这样的kv数据 reduce阶段:将相同单词的一组k ...
- Android开发艺术-第二章 IPC 机制
2.1 Android IPC 简单介绍 IPC 意为进程间通信或者跨进程通信,线程是 CPU 调度的最小单元,是一种有限的系统资源. 进程一般指一个执行单元.不论什么操作系统都须要对应的 IPC 机 ...
- 机器学习笔记之PCA-SIFT总结
不多说,直接上干货! PCA-SIFT算法在描述子构建上作了创新,主要是 将统计学中的主成分分析(PCA)应用于对描述子向量的降维,以提高匹配效率 . PCA 的原理是:一般有效信号的方差大,噪声的方 ...
- maven导入dom4j以及jaxen.jar报java.lang.UnsupportedOperationException:错误
<dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> & ...
- excel 学习
最近越來越感覺到熟練運用office軟件是一門很深的學問,以前一直忽視了這個技能,因爲從來都不覺得這個有什麼技術難度.正是因爲這樣想,所以才一直沒能去好好研究使用這套工具.現在卻覺得有必要學習,在於: ...
- 追踪分布式Memcached默认的一致性hash算法
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- C++的cout高阶格式化操作
这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等.通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切 ...
- python和python3
1 安装python和python3的方法 如果是python,那么直接python setup.py install; 如果是python3,那么直接python3 setup.py install ...
- mysql15--垂直分表水平分表
分表技术(表的结构不能变) 分表技术有(水平分割和垂直分割) 当一张越来越大时候,即使添加索引还慢的话,我们可以使用分表 以qq用户表来具体的说明一下分表的操作. 思路如图 : 首先我创建三张表 u ...
- execute ps1 with pwsh.exe
pwsh -file C:\Users\clu\source\repos\Edenred\LISA_5.0.0.0\LISA.ControlPanel\LISA.ControlPanel\bin\Re ...