2

我有一个 NSString。这个 NSString 是从语音引擎中获得的。语音输入被转换为本机 NSString。请参阅以下字符串:“将热量设置为三十二度”

有什么办法可以将其转换为“将热量设置为 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"正确的英文数字)才能使格式化程序正常工作-传递"thirty two"结果3002!您的用户可能不想在 3002 度下燃烧 :P 我想您可以使用另一个正则表达式来实现这一点。

于 2013-08-01T16:44:16.040 回答