標準的な方法を使用してこれを行う方法(ソース文字列を手動で反復することなく)?
PS:最後に、ソース文字列のソートされた文字を取得したいと思います。を使用しようとしましNSCharacterSet
たが、文字セットを文字列に変換する方法が見つかりません(セットを反復処理せずに)。
標準的な方法を使用してこれを行う方法(ソース文字列を手動で反復することなく)?
PS:最後に、ソース文字列のソートされた文字を取得したいと思います。を使用しようとしましNSCharacterSet
たが、文字セットを文字列に変換する方法が見つかりません(セットを反復処理せずに)。
このための組み込みのメソッドはありませんが、文字列の文字を繰り返し処理して、重複することなく新しい文字列を作成するのは非常に簡単です。
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"]
ます。