2010-07-02 66 views
5

我想將NSString轉換爲NSNumber而不使用numbreFromString:方法? numbreFromString:metgod在4.0中表現怪異。所以我想用另一種方法將NSString轉換爲NSNumber。請幫我....如何將NSString轉換爲NSNumber而不使用numberfromstring

+ (NSString *)formatText:(NSString *) text withLocalSettings:(BOOL) isLacale { 

    NSNumber *aNsNumber= [numberFormatter numberFromString: text]; 
    NSString *returnString = [NSString stringWithString:[numberFormatter stringForObjectValue:aNsNumber]]; 

    if(isLacale) { 
     return returnString; 
    } 
    else { 
     return [NSString stringWithFormat:@"%lf",[aNsNumber doubleValue]]; 
    } 
} 

我開發一個應用程序,我需要運行我的應用程序都在3.0和4.0。我有一個文本框,當我嘗試在文本框中輸入數字時,行爲就像這樣...在3.0中: - 它允許輸入7位數字和2個小數值(我已經像這樣格式化了)。根據選擇的國家,我已經格式化和定位了數字以及逗號分隔。這是在3.0和3.1.2完美工作

在4.0中: - 它允許你只輸入4個數字,輸入第5位數字後,它是使文本域爲空..當你輸入第5個數字時,你輸入從第一個數字開始的第六個數字並繼續相同的直到第四個數字。例如: - 當你輸入1234時,文本框出現--1234,當你輸入12345時,文本框出現「」。當你輸入6現在它以6開頭,依此類推。

我正在使用NSNumberFormatter和numberfromstring方法來格式化在文本字段中輸入的值。

我無法理解爲什麼會發生這樣的...請幫我...

+0

我可能會試圖找出爲什麼該方法奇怪地工作。在10個案例中,有9個問題存在於輸入中。發佈你的代碼和輸入 - 這將給我們更多的工作。 – 2010-07-02 06:38:49

+0

+(NSString *)formatText:(NSString *)text withLocalSettings:(BOOL)isLacale { \t [numberFormatter retain]; \t NSNumber * aNsNumber = [[NSNumber alloc] init]; \t aNsNumber = [numberFormatter numberFromString:text]; \t \t // NSLog(@「NSNumber的值是...%@」,aNsNumber); \t NSString * returnString = [NSString stringWithString:[numberFormatter stringForObjectValue:aNsNumber]]; \t \t if(isLacale){ \t \t return returnString; \t} \t else { \t \t return [NSString stringWithFormat:@「%lf」,[aNsNumber doubleValue]]; \t} } – 2010-07-02 06:49:42

+0

aNSNumber在文本字段中輸入4個數字後,當您輸入第5個數字到文本字段並嘗試調用此formatText方法後,4.0中變爲null,aNsNumber在4.0中變爲null,但在3.0中變爲3.1.3它工作正常.... – 2010-07-02 06:51:48

回答

16
[NSNumber numberWithInteger:[theString integerValue]]; 
[NSNumber numberWithDouble:[theString doubleValue]]; 

也的floatValue,的intValue,longLongValue,boolValue

編輯:

,以汽提出逗號,做上述前使用stringByReplacingOccurrencesOfString。

theString = [theString stringByReplacingOccurrencesOfString:@"," withString:@""]; 

要去除多個字符,可以使用componentsSeparatedByCharactersInSet獲取某些內容。

theSet = [NSCharacterSet characterSetWith...]; 
theString = [[theString componentsSeparatedByCharactersInSet:theSet] componentsJoinedByString:@""]; 
+0

我有一個字符串值,它包含逗號。例如: - 1,234。我想獲得我只需要1234的字符串的值。你能幫我嗎? – 2010-07-02 08:37:18

0

的iOS4非常挑剔,當涉及到數字的格式。

在您的示例代碼中,您傳遞的是語言環境 - 確保字符串中的小數點分隔符與語言環境中定義的內容一致。確保輸入格式正確的數字(iOS4)。如果您使用的是DecimalStyle,則est九千應該是9.000而不是9000。

如果你堅持使用一個替代解析器--sscanf atoi可能是一個選項。

根據您需要轉換的數字,使用標準c lib的sscanf和formatter或atoi。

#include<stdio.h> 

int main(int argc, char **argv) { 

    char s[] = "1.2"; 
    double x; 

    sscanf(s, "%lf", &x); 
    printf("The decimal number was %g\n\n", x); 

    return 1; 
} 

atoi需要一個包含整數的字符串並將該值作爲int返回。

相關問題