2013-08-01 16 views
2

我有一個NSString與我在一起。這個NSString是從一個語音引擎獲得的。語音輸入被轉換爲本地NSString。 看到以下字符串: 「設置熱到三十二度」將字符串中的數值轉換爲Objective C/C中的整數

有沒有什麼辦法讓這個轉換爲 「設置熱到32度」

如果有一些第三方庫,這是否轉換,這將是非常有益的。否則,我將不得不創建一個複雜的邏輯來完成它似乎。

+0

你在說什麼數字的範圍? – trojanfoe

+0

這是ruby,但是如果你最終寫自己的話可能會有所幫助:[markburns/numbers_in_words](https://github.com/markburns/numbers_in_words) –

回答

3

而這就是被遺忘的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我可以用另一個正則表達式來實現。