-4

このような文字列からシンボルを取得する必要があり ("5, 15, 7-10")、最初のコンマまでのシンボルを最初の文字列に書き込む必要があり、2 番目の文字列に 2 番目の文字列に書き込む必要があり、ダッシュで区切られたシンボルは次のように配列に書き込む必要があります。最初から最後までの値の再計算。

4

1 に答える 1

1

componentSeparatedByString を使用する必要があります。

NSString *list = @"5, 15, 7-10";
NSArray *listItems = [list componentsSeparatedByString:@", "];

それは次のような配列を返します@[@"5", @"15", @"7-10"];

あなたの質問について私が理解したことから、それはうまくいくはずです。ただし、理解するのが少し難しいため、質問を絞り込むことをお勧めします。あなたがそうし、私がしたことがうまくいかない場合は、喜んで解決策を修正してください.

編集:次のコードはあなたが望むことをします(私は思います):

NSString *list = @"5, 15, 7-10";
NSArray *listItems = [list componentsSeparatedByString:@", "];
NSMutableArray *expandedList = [[NSMutableArray alloc] init];

for(NSString *s in listItems){
    NSRange found = [s rangeOfString:@"-"];
    if (found.location == 1) {
        NSArray *hyphenString = [s componentsSeparatedByString:@"-"];
        NSInteger first = [[hyphenString objectAtIndex:0] intValue];
        NSInteger last = [[hyphenString objectAtIndex:1] intValue];
        [expandedList addObject:@(first)];
        NSInteger trueDiff = (last - first) - 1;
        int i = 0;
        while (i < trueDiff){
            first = first + 1;
            [expandedList addObject:@(first)];
            i++;
        }
        [expandedList addObject:@(last)];

    } else {
        [expandedList addObject:[NSNumber numberWithInt:[s intValue]]];
    }
}
NSLog(@"%@", expandedList);

それは出力されます:

2013-08-17 21:12:54.579 NumWork[693:303] (
    5,
    15,
    7,
    8,
    9,
    10
)
于 2013-08-18T00:03:56.617 に答える