【问题标题】:How to convert NSString to NSNumber without using numberfromstring如何在不使用 numberfromstring 的情况下将 NSString 转换为 NSNumber
【发布时间】:2010-07-02 06:28:50
【问题描述】:

我想在不使用 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 个数字时,它从第 1 个数字开始并继续相同的直到 4 个数字。例如: - 当你输入 1234 时,文本字段出现 - 1234 当你输入 12345 时,文本字段出现“”。当你现在输入 6 时,它以 6 开头,依此类推..

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

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

【问题讨论】:

  • 我可能会尝试研究为什么该方法工作异常。在 10 个案例中有 9 个问题在于输入。发布您的代码和输入 - 这将使我们有更多的工作。
  • +(NSString *)formatText:(NSString *) text withLocalSettings:(BOOL) isLacale { [numberFormatter retain]; NSNumber *aNsNumber = [[NSNumber alloc]init]; aNsNumber= [numberFormatter numberFromString: text]; //NSLog(@"NSNumber的值为... %@",aNsNumber); NSString *returnString = [NSString stringWithString:[numberFormatter stringForObjectValue:aNsNumber]]; if(isLacale) { return returnString; } else { return [NSString stringWithFormat:@"%lf",[aNsNumber doubleValue]]; } }
  • aNSNumber 在 4.0 中在您在文本字段中输入 4 个数字后变为空,当您在文本字段中输入第 5 个数字并尝试调用此 formatText 方法时,aNsNumber 在 4.0 中变为空,但在 3.0 到 3.1 .3 它工作正常....
  • 编辑您的问题以插入带有格式的代码 sn-p...
  • 还可以查看 Apple 网站上的开发者论坛尝试搜索“numberfromstring ios4”,您可能会感兴趣的三个主题。

标签: ios4 nsstring nsnumber


【解决方案1】:
[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:@""];

【讨论】:

  • 我有一个包含逗号的字符串值。例如:- 1,234。我想得到我只需要 1234 的字符串的值。你能帮帮我吗...
【解决方案2】:

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

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

如果您坚持使用替代解析器 - 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 返回。

【讨论】:

    猜你喜欢
    • 2011-04-27
    • 2010-11-29
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多