2010-07-02 62 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返回。