2010-08-20 3 views
5

NSUInteger에서 NSString *을 반환하는 목표 - C 함수가 있습니까, 11 예 :반환 1, 2, ..., 11,

  • 1 -> 1
  • 2 -> 2
  • ...
  • 10 -> 10
  • 21 -> 21
  • ...
  • 31 -> 31S t

1에서 31까지의 범위입니다. 감사합니다.

답변

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는 :
는 11, 12, 13, 문제를 해결.

+2

'11 ', '12', '13'은 어떻게됩니까? – polygenelubricants

+0

"11st"를 돌려 주겠다고 전화합니까? "12nd"? "13rd"? "31st"는 좋지만 "11st"는 순수한 파손입니다. 이 특수한 경우는 아마도 자신의 모든''if()' '진술을 받아 들일 만하다. 또한 나는 오히려 "stringFromInt"보다는 "ordinalFromInt"라고 불리는 것이 더 좋을 것입니다 - 그 이름은 우리가 아무것도 추가하지 않는다고 말하지 않습니다.'NSString stringWithFormat : @ "% d", num]'. –

+0

반환 값 바로 위에 조금 더 필요합니다 :'(num> = 11 && num <= 13) stringAddition = @ "th";'. –