我希望将文字转换为数字,例如将“Ninety Nine”转换为“99”,将“Second”转换为“2nd”,将“Two”转换为“2”等等。
有人知道如何做到这一点吗?
我希望将文字转换为数字,例如将“Ninety Nine”转换为“99”,将“Second”转换为“2nd”,将“Two”转换为“2”等等。
有人知道如何做到这一点吗?
苹果没有为此类目的提供API。 即使只针对一种语言,词汇分析也很困难。 将数字表达为单词可能相对简单,但从单词转换为数字需要解决许多特殊情况。
暴力方法是拥有所有可能组合的数据库。 更聪明的方法可能是分析每个单词并推断出它可能表示的数字。
您正在寻找这个,NSNumberFormatterStyle。它有一个选项,名为NSNumberFormatterSpellOutStyle
。
根据苹果的文档,
NSNumberFormatterSpellOutStyle:指定拼写格式;例如,“23”变成“twenty-three”。
看起来您想要将文字转换为数字而不是将数字转换为文字。我误读了您的问题。
由于Apple没有可用的API,您可能需要手动执行此操作。您可以检查NSNumberFormatter并查看是否可以找到对此有所帮助的内容。
正如jlehr所提到的,NSLog(@"%@", [formatter numberFromString:@"one hundred forty-three"]);
将给出数字143
。但这可能不是适用于所有可能组合的完美解决方案。
NSNumberFormatter
至少可以帮你解决部分问题。例如,当使用设置为 NSNumberFormatterSpellOutStyle
格式的实例时,NSLog(@"%@", [formatter numberFromString:@"one hundred forty-three"]);
将正确地返回数字 143。 - jlehr