加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Objective-C中NSString转NSNumber的技巧

发布时间:2021-11-21 21:11:41 所属栏目:教程 来源:互联网
导读:在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用。例如有一个字符串对象@111.22,需要转为NSNumber对象,最简单的方法就是这样:[NSNumber numberWithFloat:[@111.22 floatValue]]。 这个方法先使用NSString的floatValue方法将字

在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用。例如有一个字符串对象@"111.22",需要转为NSNumber对象,最简单的方法就是这样:[NSNumber numberWithFloat:[@"111.22" floatValue]]。
 
这个方法先使用NSString的floatValue方法将字符串转成float,再使用NSNumber的numberWithFloat方法将结果转成NSNumber。但它有一个前提条件,就是输入的字符串一定要以数字组成。如果发现有非数字字符,则直接导致程序出错。因此,它需要事先判断,保证字符串能转成NSNumber。
 
根据新的要求,将转换操作过程修改一下,代码如下所示:
 
    NSString *ss=@"224.34129";
    id result;
    NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
    if ([f numberFromString:ss])
    {
        result=[NSNumber numberWithFloat:[ss floatValue]];
    }
    else
    {
        result=ss;
    }
    NSLog(@"%.2f",[result floatValue]);
 
如此一改,功能倒是没问题了,只是看上去有一些累赘。我们知道,代码越简洁,出bug的概率就越低,代码也越显得优雅。再做修改,如下所示:
 
    NSString *ss=@"224.34129";
    id result;
    result=[f numberFromString:ss];
    if(!(result))
    {
        result=ss;
    }
    NSLog(@"%.2f",[result floatValue]);
 
 
 
 
还有其他的转换函数,如
1、字符串拼接
 NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];
 
2、字符串转int
int intString = [newString intValue];
 
3、int转字符串
NSString *stringInt = [NSString stringWithFormat:@"%d",intString];
 
4、字符串转float
 float floatString = [ newString floatValue];
 
5、float转字符串
NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];
   
通过这些转换操作,可以理解NSNumber、NSString、float三个类型的关系和转换方法。int/float是Objective-C的原始类型,而NSNumber和NSString则是类。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读