私はNSNumberFormatter
を見ましたが、それはうまくいかないので、書かれた数字を解析して実際の数字に変換する方法がありますか?"1"を返し、 "1"を返すメソッドはありますか?
0
A
答えて
0
NSNumberFormatter
あなたが道の一部を取得しますvia NSNumberFormatterSpellOutStyle
。 NSNumber
が行う基本的な書式設定は、それを終了します。
NSNumberFormatter * nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterSpellOutStyle];
NSString * numberWordString = @"three one two";
NSMutableString * digitString = [[NSMutableString alloc] init];
// Break up the input string at spaces and iterate over the result
for(NSString * s in [numberWordString componentsSeparatedByString:@" "]){
// Let the formatter turn each string into an NSNumber, then get
// the stringValue from that, which will be a digit.
[digitString appendString:[[nf numberFromString:s] stringValue]] ;
}
NSLog(@"%@", digitString); // prints "312"
明らかに、あなたはnf
、フォーマットに失敗した場合(これはクラッシュします小文字、不正な入力、異なる入力フォーマットを処理するにはいくつかの作業を配置する必要があります - それはへの不正な引数であるnil
を返しますappendString:
)
1
このようなものは(とにかく正の整数のために)機能します。これはただの出発点である、あなたは言葉が正しかったことを確認し、多分それはより堅牢にするために大文字小文字を無視するようにチェックする必要があります:
[self parseNumberWords:@"five two three"];
-(NSInteger)parseNumberWords:(NSString *)input {
NSArray *wordArray = [NSArray arrayWithObjects:@"zero",@"one",@"two",@"three",@"four",@"five",@"six",@"seven",@"eight",@"nine", nil];
NSArray *words = [input componentsSeparatedByString:@" "];
NSInteger num = 0;
NSInteger j =0;
for (NSInteger i = [words count]; i>0 ;i--) {
num = num + [wordArray indexOfObject:[words objectAtIndex:i-1]] * pow(10, j);
j = j+1;
}
NSLog(@"%ld",num);
return num;
}
関連する問題
- 1. 1/2は0.5を返しますが、sqrt(-1)はDomainErrorを返します
- 2. getchは-1を返しますか?
- 3. なぜ(true && 1)は1を返しますが、(1 && true)がtrueを返しますか?
- 4. Android:getlayoutParams()。widthは-1を返し、getWidth()は0を返します
- 5. 日付compareTo()メソッドは常に-1を返します
- 6. android view.getId()は-1を返します
- 7. Dll関数は1を返します。
- 8. JNI:AttachCurrentThreadは-1を返します
- 9. ボタンのgetIDは-1を返します。
- 10. URLConnection.getContentLength()は-1を返します
- 11. AndroidのSQLiteは-1を返します
- 12. ObjectDataSource.Insertは常に-1を返します
- 13. PipedInputStream.read()は-1を返します
- 14. jQuery.inArrayは-1を返し続けます。
- 15. ABAddressBookGetPersonCountはiOSで-1を返します
- 16. c#:ExecuteNonQuery()は-1を返します
- 17. awk:mktimeは-1を返します
- 18. コメント数は0を返しますが、コメントは1つあります。
- 19. Btrieve GetNextExtended 'UC'オプション1回だけレコードを繰り返し返す
- 20. rowIndexが-1を返しています
- 21. 1つのインスタンスからサウンドを繰り返します。
- 22. JQueryスライドショーを1回だけ繰り返しますか?
- 23. 配列は1つの値を繰り返します
- 24. QGraphicsRectItem :: boundingRect()は、1より大きいQRectFを返します
- 25. ポインタアドレスは16進数の代わりに1を返します
- 26. $ rownum = mysqli_num_rows($ result); 0を返しますが、1を返す必要があります
- 27. Android CursorWindowは1行1列しか返しません
- 28. イメージを1列に折り返す
- 29. T-SQLでは1 = 1がFalseを返します - なぜですか?
- 30. mysql_real_queryは1を返し、mysql_errorはNULL文字列を返します。
数字は0から9までですか?または、22のような数字がありますか? – rooftop
ちょうど0から9です。 –
もしそれがちょうど0から9までで、ローカライズされていないのであれば、なぜNSDictionaryを文字列 - >数値で作成しないのですか? –