【问题标题】:Convert a numeric value in a string to integer in Objective C/C在Objective C / C中将字符串中的数值转换为整数
【发布时间】:2013-08-02 16:12:56
【问题描述】:
我有一个 NSString。这个 NSString 是从语音引擎中获得的。语音输入被转换为本机 NSString。
请参阅以下字符串:
“将热量设置为三十二度”
有什么办法可以把它转换成
“将热量设置为 32 度”
如果有一些第三方库可以进行这种转换,那将非常有帮助。否则我将不得不创建一个复杂的逻辑来完成这件事。
【问题讨论】:
标签:
iphone
ios
objective-c
c
ios4
【解决方案1】:
这就是被遗忘的NSNumberFormatter 可以展示它的能力的地方。
解析输入字符串(使用正则表达式魔术或NSString's componentsSeparatedByString:,我不会讨论该步骤)并获得拼写数字后,您可以使用NSNumberFormatter's @ 987654327@快速将你的字符串转换成数字:
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 我想您可以使用另一个正则表达式来实现。