2010-08-20 6 views

Répondre

7
- (NSString *)stringFromInt:(int)num { 
    NSString stringAddition; 
    if (num%100 >= 11 && num%100 <= 13) { 
     stringAddition = @"th"; 
    } 
    else { 
     switch (num % 10) { 
      case 1: stringAddition = @"st"; break; 
      case 2: stringAddition = @"nd"; break; 
      case 3: stringAddition = @"rd"; break; 
      default: stringAddition = @"th"; break; 
     } 
    } 
    return [NSString stringWithFormat:@"%i%@", num, stringAddition]; 
} 

EDIT:
fixe 11, 12, numéro 13.

+2

Qu'en est '11',' 12', '13'? – polygenelubricants

+0

Vous appelez le retour "11st" de travail? "12ème"? "13ème"? "31st" est bon, mais "11st" est une pure rupture. Ces cas spéciaux méritent probablement leur propre déclaration 'if()', si vous voulez vraiment couvrir toutes vos bases. Aussi je préfère largement cette méthode appelée peut-être « ordinalFromInt », plutôt que « stringFromInt » - ce nom ne me dit pas que nous allons ajouter quoi que ce soit, je pense que ce soit un raccourci pour '[NSString stringWithFormat: @ "% d", num] '. –

+0

Vous avez juste besoin d'un peu plus, juste au-dessus du retour: 'si (num> = 11 && num <= 13) stringAddition = @ "th";'. –