私が見たように、あなたには2つの問題があります:
- 実際には数値である何かの文字列表現があります
- あなたは(潜在的に)文字列としてフォーマットしたい数値を持っています
したがって、問題#1:
文字列を数値に変換するには、NSNumberFormatter
. あなたはかなり単純なケースを持っています:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *n = [f numberFromString:@"$12,000,000"];
// n is 12000000
それは簡単でした!今問題#2:
混合スペルアウト スタイルが必要なため、これはよりトリッキーです。もう一度使用することを検討できますがNSNumberFormatter
、それは正しくありません。
[f setNumberStyle:NSNumberFormatterSpellOutStyle];
NSString *s = [f stringFromNumber:n];
// s is "twelve million"
だから、私たちは近づいています。この時点で、おそらく次のようなことができます。
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
}
}
でも
これが英語以外でどれほどうまく機能するかはわかりません。 警告実装者