热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS使用ASCII码和NSScanner字符扫描来判断关于键盘限制输入

一.ASCII码来判断先附上ASCII码表:在附上OC代码:这里只做了限制数字,大小写字母以外的输入,可根据实际情况做调整***Description0-9A-Za-z**@par


一.ASCII码来判断

先附上ASCII码表:

《iOS使用ASCII码和NSScanner字符扫描来判断关于键盘限制输入》

《iOS使用ASCII码和NSScanner字符扫描来判断关于键盘限制输入》

在附上OC代码:这里只做了限制 数字,大小写字母以外的输入,可根据实际情况做调整

/**
* Description 0-9 A-Z a-z
*
* @param string 输入的字符串 键盘输入时点击提示字符将多余2个以上的长度
*
* @return
*/
+ (BOOL)judgeTextFieldInputString:(NSString *)string{

for (int i = 0; i NSString *subString = [string substringWithRange:NSMakeRange(i, 1)];
if ([subString isEqualToString:@" "]) {
continue;
}
int ascii = [subString characterAtIndex:0];
if (![self judgeTextFieldInputCStringASCII:ascii]) {
return NO;
break;
}
}
return YES;

}
+ (BOOL)judgeTextFieldInputCStringASCII:(int)ascii{

int ascii_a = [@"a" characterAtIndex:0];//转ASCII码
int ascii_z = [@"z" characterAtIndex:0];

int ascii_A = [@"A" characterAtIndex:0];
int ascii_Z = [@"Z" characterAtIndex:0];

int ascii_0 = [@"0" characterAtIndex:0];
int ascii_9 = [@"9" characterAtIndex:0];

// int ascii = [string characterAtIndex:0];
if( ascii >= ascii_A && ascii <= ascii_Z){
NSLog(@"A-Z: %d",ascii);
return YES;
}else if( ascii >= ascii_a && ascii <= ascii_z){
NSLog(@"a-z :%d",ascii);
return YES;
}else if( ascii >= ascii_0 && ascii <= ascii_9){
NSLog(@"0-9 :%d",ascii);
return YES;
}
return NO;
}

二.NSScanner字符扫描来判断

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
输入框中只能输入数字和小数点,且小数点只能输入一位,参数number 可以设置小数的位数
return [ConditionJudgmentController isValidAboutInputText:textField shouldChangeCharactersInRange:range replacementString:string decimalNumber:3];
}
+(BOOL)isValidAboutInputText:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string decimalNumber:(NSInteger)number{
NSScanner *scanner = [NSScanner scannerWithString:string];
NSCharacterSet *numbers;
NSRange pointRange = [textField.text rangeOfString:@"."];
if ( (pointRange.length > 0) && (pointRange.location range.location + range.length) ){
numbers = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
}else{
numbers = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."];
}
if ( [textField.text isEqualToString:@""] && [string isEqualToString:@"."] ){
return NO;
}
short remain = number; //保留 number位小数
NSString *tempStr = [textField.text stringByAppendingString:string];
NSUInteger strlen = [tempStr length];
if(pointRange.length > 0 && pointRange.location > 0){ //判断输入框内是否含有“.”。
if([string isEqualToString:@"."]){ //当输入框内已经含有“.”时,如果再输入“.”则被视为无效。
return NO;
}
if(strlen > 0 && (strlen - pointRange.location) > remain+1){ //当输入框内已经含有“.”,当字符串长度减去小数点前面的字符串长度大于需要要保留的小数点位数,则视当次输入无效。
return NO;
}
}
NSRange zeroRange = [textField.text rangeOfString:@"0"];
if(zeroRange.length == 1 && zeroRange.location == 0){ //判断输入框第一个字符是否为“0”
if(![string isEqualToString:@"0"] && ![string isEqualToString:@"."] && [textField.text length] == 1){ //当输入框只有一个字符并且字符为“0”时,再输入不为“0”或者“.”的字符时,则将此输入替换输入框的这唯一字符。
textField.text = string;
return NO;
}else{
if(pointRange.length == 0 && pointRange.location > 0){ //当输入框第一个字符为“0”时,并且没有“.”字符时,如果当此输入的字符为“0”,则视当此输入无效。
if([string isEqualToString:@"0"]){
return NO;
}
}
}
}
NSString *buffer;
if ( ![scanner scanCharactersFromSet:numbers intoString:&buffer] && ([string length] != 0) ){
return NO;
}else{
return YES;
}
}


推荐阅读
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 在 Swift 编程中,遇到错误提示“一元运算符 '!' 不能应用于 '()' 类型的操作数”,通常是因为尝试对没有返回值的方法或函数应用逻辑非运算符。本文将详细解释该错误的原因,并提供解决方案。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文档详细介绍了Scrapy框架中的信号系统,包括如何利用信号来增强爬虫的功能性和灵活性,以及各个内置信号的具体用途和参数。 ... [详细]
  • 1、字符型常量字符型常量指单个字符,是用一对单引号及其所括起来的字符表示。例如:‘A’、‘a’、‘0’、’$‘等都是字符型常量。C语言的字符使用的就是 ... [详细]
  • MATLAB 数据读取与绘图实践
    本文详细介绍了如何使用 MATLAB 进行数据文件的选择、读取及处理,并最终绘制图形。重点在于数据的提取和转换过程。 ... [详细]
  • 本文详细介绍了Java中的`ByteArrayInputStream`和`ByteArrayOutputStream`,包括它们的基本概念、工作原理及具体应用实例。`ByteArrayInputStream`用于处理内存中的字节数组,而`ByteArrayOutputStream`则用于将数据写入内存中的字节数组。 ... [详细]
author-avatar
SIX道仙人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有