は、だから私はそれを見るように、あなたは二つの問題があります。
- をあなたが実際にあなたが(潜在的に)あなたは、文字列としてフォーマットする番号を持っている数
- 何かの文字列表現を持っている
ので、問題#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
}
}
しかし
:この時点で、あなたはおそらく、多分同じような何かを行うことができます。 警告実装者
+1大きな説明は、特に文字列のローカリゼーション/国際化について言及しています。 – Sam
ありがとうございました – Teddy13