【发布时间】:2014-04-22 20:38:11
【问题描述】:
我有一个 TextField,想知道用户是否只是按了数字
例如:: _tfNumber.text 只有数字?
NSString 上有什么函数可以解决这个问题吗?
【问题讨论】:
标签: ios objective-c nsstring
我有一个 TextField,想知道用户是否只是按了数字
例如:: _tfNumber.text 只有数字?
NSString 上有什么函数可以解决这个问题吗?
【问题讨论】:
标签: ios objective-c nsstring
让我们试试正则表达式,
NSString * numberReg = @"[0-9]";
NSPredicate * numberCheck = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberReg];
if ([numberCheck evaluateWithObject:textField.text])
NSLog (@"Number");
【讨论】:
这会让你知道所有字符是否都是数字:
NSString *originalString = @"1234";
NSCharacterSet *numberSet = [NSCharacterSet decimalDigitCharacterSet];
NSString * trimmedString = [originalString stringByTrimmingCharactersInSet:numberSet];
if ((trimmedString.length == 0) && (originalString.length > 0)) {
NSLog(@"Original string was all numbers.");
}
请注意,这确保它不会对空字符串给出误报,从技术上讲,空字符串也不包含任何非数字。
【讨论】:
没有。 NSString 不是NSNumber,您从UITextField 获得的任何值都将是NSString。请参阅 THIS SO answer 将输入的 NSString 值转换为 NSNumber。
【讨论】:
-、e、E、.。鉴于这个问题有点不清楚。
试试这个:
NSCharacterSet *_NumericOnly = [NSCharacterSet decimalDigitCharacterSet];
NSCharacterSet *myStringSet = [NSCharacterSet characterSetWithCharactersInString:mystring];
if ([_NumericOnly isSupersetOfSet: myStringSet]) {
NSLog(@"String has only numbers");
}
我来自:http://i-software-developers.com/2013/07/01/check-if-nsstring-contains-only-numbers/
您可以在UITextField 的委托方法textField:shouldChangeCharactersInRange:replacementString: 中使用此方法,并在用户输入时进行验证。
【讨论】:
isSupersetOfSet: 会返回YES,还是超集实际上必须包含其他字符?取决于此,它可能会为包含所有数字的字符串返回 NO。
不,但应该很容易写:
- (BOOL)justContainsNumbers:(NSString *)str {
if ([str length] == 0)
return NO;
for (NSUInteger i = 0; i < [str length]; i++)
if (!isdigit([str characterAtIndex:i]))
return NO;
return YES;
}
【讨论】: