我有一個NSString與我在一起。這個NSString是從一個語音引擎獲得的。語音輸入被轉換爲本地NSString。 看到以下字符串: 「設置熱到三十二度」將字符串中的數值轉換爲Objective C/C中的整數
有沒有什麼辦法讓這個轉換爲 「設置熱到32度」
如果有一些第三方庫,這是否轉換,這將是非常有益的。否則,我將不得不創建一個複雜的邏輯來完成它似乎。
我有一個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) –