Objective-C:格式数到序数:1,2,3,..到第1,第2,第3

Joh*_*ann 18 format numbers objective-c number-formatting ios

在Objective C中,有没有什么方法可以格式化integer为序数1 =>"1st",2 =>"2nd"等...适用于任何语言?因此,如果用户是法国人,他将看到"1er","2ieme"等.

非常感谢!

编辑:这是一个iOs应用程序

sud*_*-rf 14

你看过TTTOrdinalNumberFormatter哪个了FormatterKit吗?它很好用,我很确定它正是你正在寻找的.


以下是从套件中获取的示例:

TTTOrdinalNumberFormatter *ordinalNumberFormatter = [[TTTOrdinalNumberFormatter alloc] init];
[ordinalNumberFormatter setLocale:[NSLocale currentLocale]];
[ordinalNumberFormatter setGrammaticalGender:TTTOrdinalNumberFormatterMaleGender];
NSNumber *number = [NSNumber numberWithInteger:2];
NSLog(@"%@", [NSString stringWithFormat:NSLocalizedString(@"You came in %@ place!", nil), [ordinalNumberFormatter stringFromNumber:number]]);
Run Code Online (Sandbox Code Playgroud)

假设你已经为"你进入%@ place!"提供了本地化的字符串,输出将是:

* English: "You came in 2nd place!"
* French: "Vous êtes venu à la 2eme place!"
* Spanish: "Usted llegó en 2.o lugar!"
Run Code Online (Sandbox Code Playgroud)


Hen*_*y95 7

该解决方案可立即从NSNumberFormatter获得:

- (NSString *)getOrdinalStringFromInteger:(NSInteger)integer
{
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setLocale:[NSLocale currentLocale]];
    [formatter setNumberStyle:NSNumberFormatterOrdinalStyle];
    return [formatter stringFromNumber:[NSNumber numberWithInteger:integer]];
}
Run Code Online (Sandbox Code Playgroud)