Как получить количество уникальных символов в строке - PullRequest
1 голос
/ 24 августа 2009

Как я могу получить количество уникальных символов в моей строке?

Ex:

NSString * myString = @ "Hello";

Я хочу, чтобы количество было 4, а не 5.

Я пытался использовать NSCharacterSet myString и получить счетчик, но, похоже, он не работает.

NSCharacterSet * myCharSet = [NSCharacterSet characterSetWithCharactersInString: myString];

[myCharSet count];

Спасибо за совет.

Ответы [ 3 ]

2 голосов
/ 25 августа 2009

Производная вашего кода:

NSCharacterSet *myCharSet = [NSCharacterSet
              characterSetWithCharactersInString:@"Hello"];    
NSLog(@"Character Set Count: %d", [myCharSet count]);

Кажется, работает, хотя выдает предупреждение при компиляции. Это печатает «Количество символов: 4», когда я его запускаю.

В качестве альтернативы NSSet работает так, что он допускает только уникальные значения. Вы можете добавить все символы в NSSet и затем получить их количество:

NSSet *set = [NSSet setWithArray:[@"H e l l o" 
                componentsSeparatedByString:@" "]];

NSLog(@"Set Count: %d", [set count]);

Это печатает "Набор счетчиков: 4"

0 голосов
/ 25 августа 2009

Ваш код работает на меня. Если вы пытаетесь получить [myCharSet count] позже в другой подпрограмме, это может быть связано с тем, что myCharSet необходимо сохранить, и для него изначально установлено значение autorelease.

0 голосов
/ 24 августа 2009

попробуйте это:

NSString *myString = @"Hello";
    NSRange range = NSMakeRange(location,length);
    NSString *myCharSet = [myString substringWithRange:range];
...