我正在使用OpenEars来检测用户说出的数字并将其转录为文本。 我的目标是将拼出的数字转换为NSNumber实例。
我已按照here中的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的已知限制是否有任何建议可以克服这个问题?
我还没有遇到任何其他限制吗?
非常感谢所有的投入。