我想在不使用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方法格式化在文本字段中输入的值。
我无法理解为什么会这样发生......请帮助我......
答案 0 :(得分: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:@""];
答案 1 :(得分:0)
iOS4在数字格式化方面非常挑剔。
在示例代码中传入区域设置 - 确保字符串中的小数分隔符与区域设置中定义的内容一致。确保输入格式正确的数字(iOS4)id est九千应该是9.000而不是9000如果你使用的是DecimalStyle。
如果你坚持使用替代解析器 - 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返回。