为NSNumber编写数字并克服NSNumberFormatter限制

时间:2016-02-03 10:49:13

标签: ios nsnumberformatter openears

我正在使用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的已知限制是否有任何建议可以克服这个问题?

我还没有遇到任何其他限制吗?

非常感谢所有的投入。

0 个答案:

没有答案