【问题标题】: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 度”

如果有一些第三方库可以进行这种转换,那将非常有帮助。否则我将不得不创建一个复杂的逻辑来完成这件事。

【问题讨论】:

  • 你说的数字范围是多少?
  • 这是 ruby​​,但如果你最终自己编写它可能会有所帮助:markburns/numbers_in_words

标签: 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 我想您可以使用另一个正则表达式来实现。

【讨论】:

    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 2011-04-21
    • 2021-08-15
    • 2011-03-12
    • 2018-04-25
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多