将字符串中的数值转换为Objective C/C中的整数
问题描述:
我有一个NSString与我在一起。这个NSString是从一个语音引擎获得的。语音输入被转换为本地NSString。 看到以下字符串: “设置热到三十二度”将字符串中的数值转换为Objective C/C中的整数
有没有什么办法让这个转换为 “设置热到32度”
如果有一些第三方库,这是否转换,这将是非常有益的。否则,我将不得不创建一个复杂的逻辑来完成它似乎。
答
而这就是被遗忘的NSNumberFormatter
可以显示它的能力。
您解析后,你输入的字符串(使用正则表达式魔术或NSString
的componentsSeparatedByString:
,我不会要讨论的这一步),并获得拼写出号,你可以使用NSNumberFormatter
的NSNumberFormatterSpellOutStyle
快速转换您的字符串成数:
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我可以用另一个正则表达式来实现。
你在说什么数字的范围? – trojanfoe
这是ruby,但是如果你最终写自己的话可能会有所帮助:[markburns/numbers_in_words](https://github.com/markburns/numbers_in_words) –