检查输入值
我想检查用户是否给出的是一个数字,但不是字母的输入。当给出一个非数字值时,我想打印一个警告错误消息,如“格式不正确”。检查输入值
这是我的源代码:
-(IBAction)btnPressed{
NSString *firstString = textFiled1.text;
NSString *secondString = textFiled2.text;
NSString *thirdString = textFiled3.text;
int num1;
int num2;
int num3;
int output;
num1 = [firstString intValue];
num2 = [secondString intValue];
num3 = [thirdString intValue];
output = (num1 + num2)/num3;
lable1.text = [NSString stringWithFormat:@"%d",output];
}
这是我会怎么做:
NSCharacterSet *nonNumbers = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
if ([firstString rangeOfCharacterFromSet:nonNumbers].location != NSNotFound) {
// firstString has non-number characters in it!
}
使用NSNumberFormatter。如果输入参数不是有效的数字,派生的数字将为零。
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
num1 = [f numberFromString:firstString];
[f release];
if (num1 == nil) {
// throw exception
}
我是新来的Xcode。你能帮我多写一些代码吗? – 2012-01-08 22:21:23
刚刚获得firstString后。即在NSString * firstString = textFiled1.text之后;确保你将num1定义为NSNumber,尽管不是int。 – mbh 2012-01-08 22:24:38
我有NSSting到NSNumber(不兼容的指针类型初始化),但它的工作原理没有它仍然接受字母。但我想要的是它不接受字母数字。请问你能帮帮我吗? – 2012-01-09 00:34:35
感谢它的工作原理:) – 2012-01-09 01:09:41
虽然这不能正常工作,因为'decimalDigitCharacterSet'包含*不仅仅是0到9 *,它还包含其他脚本/语言中的数字。而且,如果输入是负值(这不是规定的要求,但必须考虑任何一种方式),这将失败。 – dreamlax 2012-01-09 01:14:43
我想这是真的。使用包含' - '(和'。'的字符集)的基本方法很容易。字符集包含非阿拉伯数字的事实确实是一个失败的地方。但是,在某些实际可能需要的情况下。 – 2012-01-09 01:44:48