我正在使用 OpenEars 检测用户说出的数字并转录成文本。我的目标是将拼出的数字转换为 NSNumber 实例。
我在这里听从了 Rob 的建议。所以我在调用 numberFromString 之前使用 NSNumberFormatter 并将 numberStyle 设置为 NSNumberFormatterSpellOutStyle。
这是我的 NSNumberFormatter 初始化代码的样子。
_numberFormatter = [[NSNumberFormatter alloc] init];
[_numberFormatter setLocale:[NSLocale currentLocale]];
[_numberFormatter setNumberStyle:NSNumberFormatterSpellOutStyle];
[_numberFormatter setMaximumFractionDigits:2];
[_numberFormatter setMinimumFractionDigits:2];
然后我 NSLogging numberFromString 的结果以获取一系列示例(仅用于测试)
第一的:
NSLog(@"%@", [formatter numberFromString:@"eleven point three"]);
NSLog(@"%@", [formatter numberFromString:@"three point eleven"]);
NSLog(@"%@", [formatter numberFromString:@"three point one one"]);
结果:
11.3
(null)
3.11
第二:
NSLog(@"%@", [formatter numberFromString:@"thirty-four"]);
NSLog(@"%@", [formatter numberFromString:@"thirty four"]);
结果:
34
3004
第三:
NSLog(@"%@", [formatter numberFromString:@"three point one one"]);
NSLog(@"%@", [formatter numberFromString:@"one one point three"]);
结果:
3.11
101.3
NSNumberFormatter 似乎不喜欢除个位数以外的任何小数。当涉及到必须用连字符分隔的两位数时,它似乎也有一套非常严格的规则。对于第三个例子,它只是一团糟......
这些是 NSNumberFormatter 的已知限制吗?您对克服这个有什么建议吗?
还有其他我还没有遇到的限制吗?
非常感谢所有输入。