将字符串中的数值转换为Objective C/C中的整数

问题描述:

我有一个NSString与我在一起。这个NSString是从一个语音引擎获得的。语音输入被转换为本地NSString。 看到以下字符串: “设置热到三十二度”将字符串中的数值转换为Objective C/C中的整数

有没有什么办法让这个转换为 “设置热到32度”

如果有一些第三方库,这是否转换,这将是非常有益的。否则,我将不得不创建一个复杂的逻辑来完成它似乎。

+0

你在说什么数字的范围? – *foe

+0

这是ruby,但是如果你最终写自己的话可能会有所帮助:[markburns/numbers_in_words](https://github.com/markburns/numbers_in_words) –

而这就是被遗忘的NSNumberFormatter可以显示它的能力。

您解析后,你输入的字符串(使用正则表达式魔术或NSStringcomponentsSeparatedByString:,我不会要讨论的这一步),并获得拼写出号,你可以使用NSNumberFormatterNSNumberFormatterSpellOutStyle快速转换您的字符串成数:

NSString *obtainedDegreesString = @"thirty-two"; 
NSNumberFormatter *spellOutFormatter = [[NSNumberFormatter alloc] init]; 
[spellOutFormatter setLocale:[NSLocale currentLocale]]; // or whatever locale you want 
[spellOutFormatter setNumberStyle:NSNumberFormatterSpellOutStyle]; 
NSNumber *degreesNumber = [spellOutFormatter numberFromString:obtainedDegreesString]; 
NSLog(@"%d", degreesNumber.intValue); // logs 32 

但警告 - 你必须像"thirty two"字符串转换为"thirty-two"(该correct English numerals)为您的格式化工作 - 通过"thirty two"结果3002!你的用户可能不想刻录3002度:P我可以用另一个正则表达式来实现。