2009-08-24 12 views
1

Comment puis-je obtenir le nombre de caractères uniques dans ma chaîne?Comment obtenir le nombre de caractères uniques dans une chaîne

Ex:

NSString * myString = @ "Bonjour";

Je veux que le chef d'accusation soit 4 et non 5.

Je tentais d'utiliser le NSCharacterSet de myString et obtenir le nombre, mais semble comme cela ne fonctionne pas.

NSCharacterSet * myCharSet = [NSCharacterSet characterSetWithCharactersInString: myString];

[nombre de myCharSet];

Merci pour le conseil.

+0

Quelqu'un a des suggestions sur la façon de faire cela? –

Répondre

0

essayez ceci:

NSString * myString = @ "Bonjour"; NSRange range = NSMakeRange (emplacement, longueur); NSString * myCharSet = [myString substringWithRange: plage];

+0

Quels sont l'emplacement et la longueur dans votre code? Qu'est-ce que l'obtention d'une sous-chaîne de gamme a à faire avec le comptage de caractères uniques? –

+0

Je ne comprends pas? Pouvez-vous s'il vous plaît expliquer votre solution. –

2

Dérivé de votre code:

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

semble fonctionner même si elle émet un avertissement sur la compilation. Cela imprime "Character Set Count: 4" quand je l'exécute. En alternative, un NSSet fonctionne de manière à n'autoriser que des valeurs uniques. Vous pouvez ajouter tous les personnages à un NSSet puis obtenir son compte:

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

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

Cette affiche "Set Count: 4"

0

Votre code fonctionne pour moi. Si vous tentez d'obtenir le compte [myCharSet] plus tard dans une autre routine, cela peut être dû au fait que myCharSet doit être conservé et à l'origine défini sur autorelease.