2014-04-07 20 views
6

Aşağıdaki kod: cihazla içindeNSNumberFormatter: AND parçacık (İngiliz yazım) bir sayı ortaya yazım

AVSpeechSynthesizer * speechSynthesizer = [[AVSpeechSynthesizer alloc] init]; 
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString: @"112"]; 
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-GB"]; 
speechSynthesizer speakUtterance:utterance]; 

sonuç söyleyerek: "Yüz ve oniki" (İngiliz yazım)

Ama bunun yerine numarayı 112 çevirisini ise:

NSString * wordNumber = nil; 
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en-GB"]]; 
[numberFormatter setNumberStyle:NSNumberFormatterSpellOutStyle]; 
wordNumber = [numberFormatter stringFromNumber:@(112)]; 

şimdi wordNumber (ve parçacık olmadan) "112" içerir.

Yani:

@"112" -> AVSpeechSynthesizer -> "one hundred and twelve" 
@"112" -> NSNumberFormatter -> "one hundred twelve" 

nasıl ve parçacıklar, yani, İngiliz yazım ile bir dizi çevirisini?

+0

"stringFromNumber" argümanı, dize değişmezi yerine @ 112'dir. – blackbird

+0

olası bir kopyası [Bir ayırıcı ile sözcükleri numaralandırmak mümkün mü?] (Http://stackoverflow.com/questions/12250126/is-it-possible-to-spell-out-numbers-in-words- ile-ayırıcı) –

cevap

0

Ha, sen sadece bunu yapamaz?

AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"112"]; 
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-GB"]; 
NSString *transliteration = utterance.speechString;