我的程序从用户输入接收到的天数数组(字符串格式),长度在 1-7 之间。接收到的数组具有全文的日期名称。
我可能收到的一个数组示例是:["Tuesday", "Monday", "Thursday"]
我要做的是对这个数组进行排序Monday to Sunday
并将全文名称转换为缩写。因此,我对上述数组的排序函数理想情况下会返回:["M", "Tu", "Th"]
。
永远不会出现同一天的重复项,永远不会少于 1 个,永远不会超过 7 个。
谢谢。
这很粗糙,但这是用户从中选择天数的粗略 UI:
我使用了选定的答案,但对其进行了调整以将其添加到我需要的一个地方。我对其进行了如下调整:
-(NSArray*)array:(NSArray*)array collect:(id(^)(id object))block
{
NSMutableArray * result = [ NSMutableArray array ] ;
for( id object in array ) { [ result addObject:block( object) ] ; }
return result ;
}
-(NSArray*)arrayBySortingAndAbbreviatingDayNames:(NSArray*)arrayToSort
{
NSArray * dayNames = @[ @"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday", @"Sunday" ] ;
NSArray * abbreviations = @[ @"M", @"Tu", @"W", @"Th", @"F", @"Sa", @"Su" ] ;
NSArray * array = [ self array:arrayToSort collect:^(NSString * dayName){
return @([ dayNames indexOfObject:dayName ]) ;
} ] ;
array = [ array sortedArrayUsingSelector:@selector( compare: ) ] ;
array = [ self array:array collect:^(NSNumber * index){
return abbreviations[ [ index integerValue ] ] ;
}];
return array ;
}