2012-06-22 2 views
2

Как это сделать, используя стандартные методы (без ручной итерации через исходную строку)?Удалить все повторяющиеся символы из NSString

PS: В конце я хочу получить отсортированные символы исходной строки. Я пытался использовать NSCharacterSet, но не могу найти способ преобразования набора символов в строку (без повторения набора).

+2

Я не думаю, что это может быть выполнено без повторения через исходную строку. – omz

+0

Как и на этот вопрос http://stackoverflow.com/questions/1072744/checking-for-multiple-characters-in-nsstring –

ответ

3

Там нет встроенного метода для этого, но это довольно легко перебрать символы строки и построить новую строку без дубликатов:

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"].

Смежные вопросы