私は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. Nopoc execute()メソッドは-1を返します
- 2. Androidメソッド:メソッド1はエラーのある空のString値を返し、メソッド2はnullポインタ例外を返します
- 3. 1/2は0.5を返しますが、sqrt(-1)はDomainErrorを返します
- 4. getchは-1を返しますか?
- 5. なぜ(true && 1)は1を返しますが、(1 && true)がtrueを返しますか?
- 6. GetMenuItemCount -1を返します
- 7. コード "1 \ u02ff" .IndexOf( "1")は-1を返し
- 8. メソッド内で-1を返す方法
- 9. System :: DateTimeは1/1/1の値を返します00:00:00
- 10. 日付compareTo()メソッドは常に-1を返します
- 11. KNeighborsClassifierの確率予測メソッドは0と1を返します
- 12. getAdapterPosition()は、OnClick()メソッドで常に-1を返します
- 13. Android:getlayoutParams()。widthは-1を返し、getWidth()は0を返します
- 14. コメント数は0を返しますが、コメントは1つあります。
- 15. LTRIM()は "-1"のセルを返します
- 16. PipedInputStream.read()は-1を返します
- 17. Dll関数は1を返します。
- 18. ObjectDataSource.Insertは常に-1を返します
- 19. JNI:AttachCurrentThreadは-1を返します
- 20. ABAddressBookGetPersonCountはiOSで-1を返します
- 21. perf_event_openは常に-1を返します
- 22. pyodbc rowcountは-1を返します
- 23. Javafx Combox getSelectedIndexは-1を返します
- 24. db2_num_rows()は-1を返します
- 25. c#:ExecuteNonQuery()は-1を返します
- 26. Jquery.getは1を返します。
- 27. Color.argb(255,255,255,255)は-1を返します
- 28. AndroidのSQLiteは-1を返します
- 29. URLConnection.getContentLength()は-1を返します
- 30. ExecuteNonQueryは常に-1を返します
数字は0から9までですか?または、22のような数字がありますか? – rooftop
ちょうど0から9です。 –
もしそれがちょうど0から9までで、ローカライズされていないのであれば、なぜNSDictionaryを文字列 - >数値で作成しないのですか? –