Ted*_*y13 0 xcode objective-c nsnumberformatter ios
我有一个名为realEstateWorth的字符串,其值为$ 12,000,000.我需要这个相同的字符串来保持字符串,但任何数字(例如上面的那个)都要显示为1200万美元或600万美元.关键是它需要在数字之后加上"百万"字样.
我知道有nsNumberFormatter可以将字符串转换为数字,反之亦然,但它可以做我需要的吗?
如果有人有任何想法或建议,将不胜感激.
谢谢!
所以我看到它,你有两个问题:
所以,问题#1:
要将字符串转换为数字,请使用NSNumberFormatter.你有一个非常简单的案例:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *n = [f numberFromString:@"$12,000,000"];
// n is 12000000
Run Code Online (Sandbox Code Playgroud)
那很简单!现在问题#2:
这比较棘手,因为你想要一种混合的拼写风格.您可以考虑NSNumberFormatter再次使用,但它不太正确:
[f setNumberStyle:NSNumberFormatterSpellOutStyle];
NSString *s = [f stringFromNumber:n];
// s is "twelve million"
Run Code Online (Sandbox Code Playgroud)
所以,我们更接近了.在这一点上,你或许可以这样做:
NSInteger numberOfMillions = [n integerValue] / 1000000;
if (numberOfMillions > 0) {
NSNumber *millions = [NSNumber numberWithInteger:numberOfMillions];
NSString *numberOfMillionsString = [f stringFromNumber:millions]; // "twelve"
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *formattedMillions = [f stringFromNumber:millions]; // "$12.00"
if ([s hasPrefix:numberOfMillionsString]) {
// replace "twelve" with "$12.00"
s = [s stringByReplacingCharactersInRange:NSMakeRange(0, [numberOfMillionsString length]) withString:formattedMillions];
// if this all works, s should be "$12.00 million"
// you can use the -setMaximumFractionDigits: method on NSNumberFormatter to fiddle with the ".00" bit
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道这对英语以外的其他方面有多好. CAVEAT IMPLEMENTOR