2010-07-31 14 views
5

muszę napisać numery jak: 1> Yekprzeliczyć słowy, w Objective C

123> yeksad o bist o se

1123> Yek hezar o yeksad o bist o se

3002001> se milion O zrobić hezar o Yek ...

I, m początkujący w Objective C :)

piszę w C, ale chcę konwertować to, do obj_c! Jak mogę to zrobić?

somthing jak:

const char *yekan[10]={"","yek","do","se","chahar","panj","shesh","haft","hasht","noh"}; 
char ary[9]={'0','0','0','0','0','0','0','0','0'}; 

// get a number from user & converting it to string 

// user number: 123 > the number in ary:000 000 123) 

// '3' => 3 

m=(int) ary[8]; 
m=m-'0'; 

if (j==3) { printf(" %s ",yekan[m]);} // yekan[3] = se 

output: se 

dzięki.

Odpowiedz

21

klasa NSNumberFormatter ma wbudowane funkcje do konwersji liczb słownie:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle: NSNumberFormatterSpellOutStyle]; 
[formatter setLocale:...]; // Set locale if you want to use something other then the current one 
NSString* numberString = [formatter stringFromNumber:[NSNumber numberWithInt: 100]]; 
+0

dziękuję za odpowiedź :), ale jak mogę ustawić locale na perski env ...? – aden

+0

Wo0oW mogę ustawić persianlocal :) NSLocale * persianLocale = [[NSLocale alloc] initWithLocaleIdentifier: @ "fa_IR"]; jeszcze raz dziękuję: * – aden

+0

Dziękuję bardzo. :) –

0

Swift wersji @Vladimir odpowiedź (na wszelki wypadek)

let formatter = NSNumberFormatter() 
formatter.numberStyle = .SpellOutStyle 
formatter.locale = NSLocale(localeIdentifier: "en_US") 
let string = formatter.stringFromNumber(55015515)