我有一个 NSString。这个 NSString 是从语音引擎中获得的。语音输入被转换为本机 NSString。请参阅以下字符串:“将热量设置为三十二度”
有什么办法可以将其转换为“将热量设置为 32 度”
如果有一些第三方库可以进行这种转换,那将非常有帮助。否则我将不得不创建一个复杂的逻辑来完成这件事。
我有一个 NSString。这个 NSString 是从语音引擎中获得的。语音输入被转换为本机 NSString。请参阅以下字符串:“将热量设置为三十二度”
有什么办法可以将其转换为“将热量设置为 32 度”
如果有一些第三方库可以进行这种转换,那将非常有帮助。否则我将不得不创建一个复杂的逻辑来完成这件事。
这就是一个被遗忘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 我想您可以使用另一个正则表达式来实现这一点。