3

我正在使用 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 的已知限制吗?您对克服这个有什么建议吗?

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

非常感谢所有输入。

4

0 回答 0