有没有办法格式化带有前导0和小数的NSNumber?例如,我需要有能力写入4.5和000.目前我有它允许小数,但不是0的前导。
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterNoStyle;
NSString *myString = [f numberFromString:@"4.5"];
NSLog(@"myString: %@",myString);
NSString *myOtherString = [f numberFromString:@"000"];
NSLog(@"myOtherString:%@",myOtherString);
上面的输出是:'myString:4.5'和'myOtherString:0'。我需要能够同时将'4.5'和'000'作为输出。
我看过Apple的“数据格式指南”但没有取得多大成功。
答案 0 :(得分:7)
请注意,[f numberFromString:@"4.5"]
会返回NSNumber*
而不是NSString*
你想要这样的东西:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterNoStyle;
NSNumber *myNumber;
NSString *myString;
myNumber = [f numberFromString:@"4.5"];
[f setNumberStyle:kCFNumberFormatterDecimalStyle];
myString = [f stringFromNumber:myNumber];
NSLog(@"myString: %@",myString);
myNumber = [f numberFromString:@"000"]; // Note that the extra zeros are useless
[f setFormatWidth:3];
[f setPaddingCharacter:@"0"];
myString = [f stringFromNumber:myNumber];
NSLog(@"myString: %@",myString);
NSLog输出:
myString:4.5
myString:000
如果您没有字符串,只需创建如下编号:
myNumber = [NSNumber numberWithFloat:4.5];
myNumber = [NSNumber numberWithInt:0];
或者只使用标准格式:
myString = [NSString stringWithFormat:@"%.1f", [myNumber floatValue]];
myString = [NSString stringWithFormat:@"%03d", [myNumber intValue]];
如果您不需要NSNumber
表示,只需使用标准格式:
myString = [NSString stringWithFormat:@"%.1f", 4.5];
myString = [NSString stringWithFormat:@"%03d", 0];
答案 1 :(得分:1)
您可以尝试以下方式:
NSString *myString = [NSString stringWithFormat:@"%03f", [myNSNumber floatValue]];
这样,在printf format之后,将打印您的号码,强制打印至少3位数,并用“0”填空任何空格。
答案 2 :(得分:1)
作为000的主题变体
,这怎么样? NSNumber *myNumber;
NSString *myString =@"000" ;
NSString * myStringResult;
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterNoStyle;
[f setHasThousandSeparators:FALSE]; //-- remove seperator
[f setMinimumIntegerDigits:[myString length ]]; //-- set minimum number of digits to display using the string length.
myNumber = [f numberFromString:myString];
myStringResult = [f stringFromNumber:myNumber];
NSLog(@"myStringResult: %@",myStringResult);
答案 3 :(得分:0)
由于这是经常被问及Apple的文档很糟糕,这是人们将要寻找的答案。以下链接有两个解决方案。一个使用NSString stringWithFormat:
,另一个使用NSNumberFormatter
。