7

textbozo__foo!!bar.bazの場合、これを含む NSString を に分割する方法は(bozo, foo, bar, baz)?

つまり、文字列 (デリミタ) と で構成要素に__区切り!!ます.

4

5 に答える 5

22

NSCharacterSet を使用して文字列を分割できます。これを試して

NSString *test=@"bozo__foo!!bar.baz";
NSString *sep = @"_!.";
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:sep];
NSArray *temp=[test componentsSeparatedByCharactersInSet:set];
NSLog(@"temp=%@",temp);
于 2012-11-23T07:51:19.590 に答える
0
NSString *text = @"bozo__foo!!bar.baz";

NSArray *split1 = [text componentsSeparatedByString:@"__"];
NSArray *split2 = [[split1 lastObject] componentsSeparatedByString:@"!!"];
NSArray *split3 = [[split2 lastObject] componentsSeparatedByString:@"."];

NSLog(@"%@, %@, %@, %@", split1[0], split2[0], split3[0], split3[1]);
于 2012-11-22T19:28:19.420 に答える
0

より機能的な解決策は-componentsSeparatedByString:、以前のセパレーターの適用中に導出された各コンポーネントに対して再帰的に適用することです。

NSString カテゴリ

- (NSMutableArray<NSString *> *)gvr_componentsSeparatedByStrings:(NSArray<NSString *> *)separators {
    if (separators.count == 0) {
        return [NSMutableArray arrayWithObject:self];
    }

    NSString *separator = [separators firstObject];

    NSArray *reducedSeparators = [separators gvr_arrayByRemovingFirstObject];

    NSArray *components = [self componentsSeparatedByString:separator];

    NSMutableArray *result = [NSMutableArray new];

    for (NSString *component in components) {
        NSMutableArray *subResult = [component gvr_componentsSeparatedByStrings:reducedSeparators];

        [result addObjectsFromArray:subResult];
    }

    return result;
}

NSArray カテゴリ

- (NSArray *)gvr_arrayByRemovingFirstObject {
    NSMutableArray *result = [NSMutableArray new];
    for (NSInteger i = 1; i < self.count; i++) {
        [result addObject:self[i]];
    }

    return [result copy];
}
于 2017-07-12T11:22:49.917 に答える