2012-08-29 53 views
1

現在我嘗試添加前端檢查我的應用程序來檢測,如果用戶輸入只在文本字段數量。檢查的NSString「000001XX」是一個數字用的intValue

我用:

- (IBAction)checkID:(UITextField *)sender { 
if ([sender.text isEqualToString:@""]) { 
    sender.text = @"This information is required"; 
    sender.backgroundColor =[UIColor redColor]; 
}else if (![sender.text intValue]) { 
    sender.text = [sender.text stringByAppendingString:@" is not valid number"]; 
    sender.backgroundColor =[UIColor redColor]; 
} 
NSLog(@"send.text is %@, intValue is %d",sender.text,[sender.text intValue]); 

}

但我發現它的文本開始數量和字符串結尾,它的intValue仍然是數量。 在我的文本中,文本是「00001aa」,但intValue是1.

是否有其他方法可以過濾掉這個「00001aa」文本?

在此先感謝。

回答

0

是的,您可以使用NSRegularExpressionNSCharacterSet(適用於正數)。

的正則表達式,使用^[-+]?[0-9]+$

NSRegularExpression *numEx = [NSRegularExpression 
    regularExpressionWithPattern:@"^[-+]?[0-9]+$" options:0 error:nil 
]; 
NSLog(@"%ld", [numEx numberOfMatchesInString:@"-200" options:0 range:NSMakeRange(0, 4)]); 
NSLog(@"%ld", [numEx numberOfMatchesInString:@"001A" options:0 range:NSMakeRange(0, 4)]); 

對於字符集,請使用[NSCharacterSet decimalDigitCharacterSet]

BOOL isNum = [[NSCharacterSet decimalDigitCharacterSet] 
    isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:@"001AA"] 
]; 
+0

謝謝,我會使用此解決方案 – Kenny

相關問題