歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Objective-C中NSString轉NSNumber的方法

在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則是類。

Copyright © Linux教程網 All Rights Reserved