5

我想在不使用 numbreFromString: 方法的情况下将 NSString 转换为 NSNumber?numbreFromString: metgod 在 4.0 中表现得很奇怪。所以我想使用另一种方法将 NSString 转换为 NSNumber。请帮我....

+ (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]];
    }
} 

0

我正在开发一个应用程序,我需要在 3.0 和 4.0 中运行我的应用程序。我有一个文本字段,当我尝试在文本字段中输入数字时,行为是这样的......在 3.0 中:- 它允许输入 7 个数字和 2 个小数值(我已将其格式化为这样)。我已根据所选国家/地区对数字以及逗号分隔符进行格式化和本地化。它在 3.0 和 3.1.2 中完美运行

IN 4.0 : - 它只允许您输入 4 个数字,在输入第 5 个数字后,它会使文本字段为空。当您输入第 5 个数字和输入第 6 个数字时不显示任何内容,它从第一个数字开始并继续相同的直到 4 个数字。例如: - 当你输入 1234 时,文本字段出现 - 1234 当你输入 12345 时,文本字段出现“”。当你现在输入 6 时,它以 6 开头,依此类推..

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

我无法理解为什么会这样……请帮帮我……

4

2 回答 2

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:@""];
于 2010-07-02T06:52:46.800 回答
0

iOS4 在数字格式方面非常挑剔。

在您的示例代码中,您传入了语言环境 - 确保字符串中的小数点分隔符与语言环境中定义的内容一致。确保您输入的数字格式正确(iOS4)id est 九千应该是 9.000,如果您使用的是 DecimalStyle,则不是 9000。

如果您坚持使用替代解析器 - sscanf anatoi 可能是一种选择。

根据您需要转换的数字,将标准 c lib 的 sscanf 与格式化程序或 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 返回。

于 2010-07-02T06:39:57.153 回答