2

標準的な方法を使用してこれを行う方法(ソース文字列を手動で反復することなく)?

PS:最後に、ソース文字列のソートされた文字を取得したいと思います。を使用しようとしましNSCharacterSetたが、文字セットを文字列に変換する方法が見つかりません(セットを反復処理せずに)。

4

1 に答える 1

4

このための組み込みのメソッドはありませんが、文字列の文字を繰り返し処理して、重複することなく新しい文字列を作成するのは非常に簡単です。

NSString *input = @"addbcddaa";
NSMutableSet *seenCharacters = [NSMutableSet set];
NSMutableString *result = [NSMutableString string];
[input enumerateSubstringsInRange:NSMakeRange(0, input.length) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
    if (![seenCharacters containsObject:substring]) {
        [seenCharacters addObject:substring];
        [result appendString:substring];
    }
}];
NSLog(@"String with duplicate characters removed: %@", result);
NSLog(@"Sorted characters in input: %@", [seenCharacters.allObjects sortedArrayUsingSelector:@selector(compare:)]);

これにより、文字列"adbc"(重複が削除された)と一意の文字の並べ替えられた配列が生成され["a", "b", "c", "d"]ます。

于 2012-06-22T08:34:44.950 に答える