Objective-c中数字型字符串转换NSNumber的三种方法

MAC OS/iOS 开发时,我们会遇到这类情况。如何将输入的符合数字格式的字符串,转换成NSNumber 类型的对象。

我首先写了这个方法:

 

     id result;

     NSString * ss;

 

     ss=@"124";

 

     result=[NSNumber numberWithFloat:[ss floatValue]];

 

     NSLog(@"%f",[ss floatValue]);

     NSLog(@"%f",[result floatValue]); 
 

 

直接将NSString 类的floatValue 方法将ss 对象转成float 类型,再使用NSNumbernumberWithFloat 方法转成NSNumber 类型的对象。

但这里有一个问题, 如果ss 不是@”111.22 ,而是@xxx ”,则该方法将报错的。

因此,这里需要一个事先判断,判断ss 是不是能转成成NSNumber

根据这个修改要求,我再将代码转换成这样:

   ss=@"224.34129";

 

     NSNumberFormatter *f = [[NSNumberFormatter alloc] init];

 

     if ([f numberFromString:ss])

     {

         result=[NSNumber numberWithFloat:[ss floatValue]];

     }

     else

     {

         result=ss;

     }

 

     NSLog(@"%.2f",[result floatValue]); 

 

 

这样,功能是没有问题了。但看过之后,觉得有点累赘感。

代码简洁点可不可以呢?最终修改成这样几行,如下所示:

 

    ss=@"324.34";

 

     result=[f numberFromString:ss];

     if(!(result))

     {

         result=ss;

     }

 

     NSLog(@"%.2f",[result floatValue]); 

 

 

 

 

(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1623943 )

 

 

测试结果如下: 

2012-08-07 17:35:04.203 apple1[2484] 124.000000

2012-08-07 17:35:04.203 apple1[2484] 124.000000

2012-08-07 17:35:04.203 apple1[2484] 224.34

2012-08-07 17:35:04.203 apple1[2484] 324.34

 

对于这个方法,我做了几次修改。当然,这是自己本着爱好再写,如果到真实项目中,可能在第一步就停滞了。

在这个方法的编写中,我理解了NSNumberNSStringfloat 三个类型的关系,及其之间的相互转换。float 是原始类型,NSNumberNSString 是对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值