iphone - objective-c :NSScanner扫描双重问题

标签 iphone objective-c ios

在我的iPhone应用程序中,我试图了解字符串是否是有效数字,下面的代码大多数时候都有效,但是当我有一个以数字开头和以文本结尾的值时,它错误地返回“true”,例如“34rty”

if([[NSScanner scannerWithString:value] scanDouble:NULL] ){
     val=[NSNumber numberWithDouble:[value doubleValue]];
}   

这是怎么了

最佳答案

scanDouble通过引用返回。

NSString *string = @"34rty";
NSScanner *scanner = [NSScanner scannerWithString:string];
double doubleValue;
[scanner scanDouble:&doubleValue];
NSNumber *doubleNumber = [NSNumber numberWithDouble:doubleValue];
NSLog(@"doubleValue: %f", doubleValue);
NSLog(@"doubleNumber: %@", doubleNumber);

NSLog输出:
doubleValue: 34.000000
doubleNumber: 34

如果前面有文字,您将必须扫描至该号码。

正如@Benjamin所说,RegEx可能只是检查的更好选择。

关于iphone - objective-c :NSScanner扫描双重问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7499626/

相关文章:

iphone - 掌握 UIviews 和 UIViewcontrollers 的概念

ios - 从cocos2d应用播放iTunes歌曲预览

objective-c - NSJSONSerialization.JSONObjectWithData 更改字段类型

ios - 如何在 switch 语句中使用谓词

ios - 在 Google map 上显示和隐藏用户默认位置标记

iphone - 在 cocos2d 层顶部的 uitableview 中制作自定义 uitableviewcell

ios - Images.xcassets 为 iPhone 6 拍摄了错误的图像?

ios - 从第一个空格拆分 NSString

ios - 为什么副本捆绑资源中的文件显示为红色?

ios - 如何在使用 MagicalImport 导入数据后保存上下文?