2

私は NSString を持っています。この NSString は Voice エンジンから取得されます。音声入力はネイティブ NSString に変換されます。次の文字列を参照してください: 「熱を 32 度に設定」

これを「熱を32度に設定」に変換する方法はありますか

この変換を行うサードパーティのライブラリがあれば、非常に役立ちます。そうしないと、これを行うために複雑なロジックを作成する必要があるようです。

4

1 に答える 1

3

そしてそれこそが、忘れられたNSNumberFormatterものに何ができるかを示すことができる場所です。

入力文字列を解析し (正規表現マジックまたはNSString'sを使用しcomponentsSeparatedByString:ます。その手順については説明しません)、スペルアウトされた数値を取得したら、NSNumberFormatter'sNSNumberFormatterSpellOutStyleを使用して文字列を数値にすばやく変換できます。

NSString *obtainedDegreesString = @"thirty-two";
NSNumberFormatter *spellOutFormatter = [[NSNumberFormatter alloc] init];
[spellOutFormatter setLocale:[NSLocale currentLocale]]; // or whatever locale you want
[spellOutFormatter setNumberStyle:NSNumberFormatterSpellOutStyle];
NSNumber *degreesNumber = [spellOutFormatter numberFromString:obtainedDegreesString];
NSLog(@"%d", degreesNumber.intValue); // logs 32

ただし、警告 -フォーマッタを機能させるには、文字列(正しい英語の数字)に変換する必要があり"thirty two""thirty-two"ます - 渡す結果は! あなたのユーザーはおそらく 3002 度で燃えたくないでしょう :P 別の正規表現を使用してそれを達成できると思います。"thirty two"3002

于 2013-08-01T16:44:16.040 に答える