代码之家  ›  专栏  ›  技术社区  ›  Pradeep Reddy Kypa

如何在不使用numberfromstring的情况下将NSString转换为NSNumber

  •  5
  • Pradeep Reddy Kypa  · 技术社区  · 14 年前

    + (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运行我的应用程序。我有一个textfield,当我试图在textfield中输入数字时,行为是这样的。。。在3.0中:-它允许输入7位数字和2个小数(我已经这样格式化了它)。我已经格式化和本地化的数字连同逗号分隔取决于国家选择。它在3.0和3.1.2中运行良好

    在4.0中:-它只允许您输入4个数字,在输入第5位数字后,它将文本字段变为空。。当你输入第5个数字时,不显示任何内容,当你输入第6个数字时,它从第一个数字开始,一直持续到4个数字。例如:-输入1234时,textfield显示为-1234,输入12345时,textfield显示为“”。当你输入6时,它从6开始,以此类推。。

    我使用NSNumberFormatter和numberfromstring方法格式化在textfield中输入的值。

    我不明白为什么会这样。。。请帮帮我。。。

    2 回复  |  直到 13 年前
        1
  •  16
  •   drawnonward    14 年前
    [NSNumber numberWithInteger:[theString integerValue]];
    [NSNumber numberWithDouble:[theString doubleValue]];
    

    还有floatValue、intValue、longValue、boolValue

    编辑:

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

    要去掉多个字符,您可以在集合中使用由字符分隔的组件。

    theSet = [NSCharacterSet characterSetWith...];
    theString = [[theString componentsSeparatedByCharactersInSet:theSet] componentsJoinedByString:@""];
    
        2
  •  0
  •   Niels Castle    14 年前

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

    在示例代码中,您传入了一个区域设置-请确保字符串中的十进制分隔符与区域设置中定义的分隔符一致。确保您输入的数字格式正确(iOS4)id est9000应该是9.000而不是9000如果您使用的是小数样式。

    如果您坚持使用另一种解析器-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的形式返回值。