NSStringの内容が整数値であるかどうかを確認する方法は?すぐに利用できる方法はありますか?
次のようなことをするより良い方法があるはずです:
- (BOOL)isInteger:(NSString *)toCheck {
if([toCheck intValue] != 0) {
return true;
} else if([toCheck isEqualToString:@"0"]) {
return true;
} else {
return false;
}
}
-intValue
または-integerValue
メソッド。文字列が整数で始まらない場合はゼロを返します。ゼロは整数の有効な値であるため、これは少し残念です。
より良いオプションは [NSScanner scanInt:]
は、適切な値が見つかったかどうかを示すBOOL
を返します。
このようなもの:
NSScanner* scan = [NSScanner scannerWithString:toCheck];
int val;
return [scan scanInt:&val] && [scan isAtEnd];
@ -kevboの answer を基にして、0以上の整数をチェックします。
if (fooString.length <= 0 || [fooString rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location != NSNotFound) {
NSLog(@"This is not a positive integer");
}
A Swift上記のバージョン:
func getPositive(incoming: String) -> String {
if (incoming.characters.count <= 0) || (incoming.rangeOfCharacterFromSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet) != nil) {
return "This is NOT a positive integer"
}
return "YES! +ve integer"
}
小数点付きの数字を忘れないでください!!!
NSMutableCharacterSet *carSet = [NSMutableCharacterSet characterSetWithCharactersInString:@"0123456789."];
BOOL isNumber = [[subBoldText stringByTrimmingCharactersInSet:carSet] isEqualToString:@""];
func getPositive(input: String) -> String {
if (input.count <= 0) || (input.rangeOfCharacter(from: NSCharacterSet.decimalDigits.inverted) != nil) {
return "This is NOT a positive integer"
}
return "YES! integer"
}
Swift 5の@cocoの回答を更新