在开发的过程中会遇到各种各样的需求,比如需要判断一个NSString的变量内容是否为Int数据或者Float数据,这时候可以用NSScanner来简单的判断下
1.判断NSString是否为int内容
1 2 3 4 5 6 7 8
| - (BOOL)isPureInt:(NSString *)string{ if (!string) { return NO; } NSScanner *_scanner = [NSScanner scannerWithString:string]; int val; return [_scanner scanInt:&val] && [_scanner isAtEnd]; }
|
调用测试如下:
1 2 3 4 5 6
| NSString *pureIntString = @"123"; NSString *noPureIntString = @"123ab"; BOOL isPure1 = [self isPureInt:pureIntString]; NSLog(@"'%@'字符串%@int内容的字符串",pureIntString,isPure1 ? @"是" : @"不是"); BOOL isPure2 = [self isPureInt:noPureIntString]; NSLog(@"'%@'字符串%@int内容的字符串",noPureIntString,isPure2 ? @"是" : @"不是");
|
2.判断NSString是否为float内容
1 2 3 4 5 6 7 8
| - (BOOL)isPureFloat:(NSString *)string{ if (!string) { return NO; } NSScanner* scan = [NSScanner scannerWithString:string]; float val; return [scan scanFloat:&val] && [scan isAtEnd]; }
|
调用测试如下:
1 2 3 4 5 6
| NSString *pureFloatString = @"1.23"; NSString *nopureFloatString = @"1.23a"; BOOL isPure1 = [self isPureFloat:pureFloatString]; NSLog(@"'%@'字符串%@float内容的字符串",pureFloatString,isPure1 ? @"是" : @"不是"); BOOL isPure2 = [self isPureFloat:nopureFloatString]; NSLog(@"'%@'字符串%@float内容的字符串",nopureFloatString,isPure2 ? @"是" : @"不是");
|
总结
NSScanner还提供其他的API来检测对应的数据类型,遇到对应的需求大家可以尝试使用一下!
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏