0

このような文字列のセットがあります。

1 Wednesday, 3 Monday, 1 2 Tuesday

今、文字だけを考慮してこれらをソートする必要があります。結果は

3 Monday, 1 2 Tuesday, 1 Wednesday

文字列は部分文字列 (水曜日、月曜日、火曜日) を考慮して並べ替えられているため、結果が得られました。どうすればそれができますか?

4

3 に答える 3

0

試す

NSArray *array = @[@"1 Wednesday",@"3 Monday",@"1 2 Tuesday"];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"EEEEE"];

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    NSCharacterSet *validCharacterSet = [NSCharacterSet letterCharacterSet];
    NSCharacterSet *unwantedCharecterSet = [validCharacterSet invertedSet];
    NSString *string1 = [(NSString *)obj1 stringByTrimmingCharactersInSet:unwantedCharecterSet];
    NSString *string2 = [(NSString *)obj2 stringByTrimmingCharactersInSet:unwantedCharecterSet];

    NSDate *date1 = [dateFormatter dateFromString:string1];
    NSDate *date2 = [dateFormatter dateFromString:string2];

    return [date1 compare:date2];

}];

( "3 月曜日", "1 2 火曜日", "1 水曜日" )

于 2013-04-19T08:06:55.893 に答える