前言:ASCII表的主要作用一般:1.字符與int(貌似是int吧)互轉(zhuǎn)昂灵。
2.進行大小判斷,以此來“劃定范圍”
{
if ([textField.text rangeOfString:@"."].location == NSNotFound) {
_isHaveDian = NO;
}
if ([string length] > 0) {
//注意這里的index為0戚哎,表明這個方法是一個字符一個字符地觸發(fā)的嗎攘已?
unichar single = [string characterAtIndex:0];//當(dāng)前輸入的字符
//這里是字符根據(jù)ASCII表轉(zhuǎn)成int類型進行比較验烧,(小于大于號就暴露了其基本數(shù)據(jù)類型的面目了,么么噠)
if ((single >= '0' && single <= '9') || single == '.') {//數(shù)據(jù)格式正確
//首字母不能為0和小數(shù)點
//第一個字符的時候,textField居然為空伪窖!
if([textField.text length] == 0){
if(single == '.') {
[self showError:@"親逸寓,第一個數(shù)字不能為小數(shù)點"];
//不單單是提示而且順便還替換了
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
if (single == '0') {
[self showError:@"親,第一個數(shù)字不能為0"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
//輸入的字符是否是小數(shù)點
if (single == '.') {
if(!_isHaveDian)//text中還沒有小數(shù)點
{
_isHaveDian = YES;
return YES;
}else{
[self showError:@"親覆山,您已經(jīng)輸入過小數(shù)點了"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}else{
if (_isHaveDian) {//存在小數(shù)點
/*
限制小數(shù)點關(guān)鍵的一步
*/
//判斷小數(shù)點的位數(shù)
NSRange ran = [textField.text rangeOfString:@"."];
//range.location當(dāng)前字符所在textField.text的位置
if (range.location - ran.location <= 2) {
return YES;
}else{
[self showError:@"親竹伸,您最多輸入兩位小數(shù)"];
return NO;
}
}else{
return YES;
}
}
}else{//輸入的數(shù)據(jù)格式不正確
[self showError:@"親,您輸入的格式不正確"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
return YES;
}
}
所以像這種操作位數(shù)的簇宽,建議還是用range來做吧