NSString+rangesOfString
Voici une petite category pour NSString qui permet de détecter toutes les occurrences d'une NSString dans une autre NSString et renvoyer un NSArray de NSRange (sous forme de NSValue).
NSString+rangesOfString.h
NSString+rangesOfString.m
Je l'ai utiliser pour faire un jeu du pendu. C'est la premiere fois que je crée une "Category" donc je sais pas si je l'ai faite de la bonne façon donc n'hésitez pas à me corriger.
NSString+rangesOfString.h
<br />
#import <Foundation/Foundation.h><br />
@interface NSString (rangesOfString)<br />
- (NSArray *)rangesOfString:(NSString *)string;<br />
@end<br />
NSString+rangesOfString.m
<br />
#import "NSString+rangesOfString.h"<br />
@implementation NSString (rangesOfOccurence)<br />
- (NSArray *)rangesOfString:(NSString *)string<br />
{<br />
NSMutableArray *array = [[[NSMutableArray alloc] init] autorelease];<br />
NSRange range = NSMakeRange(0, [self length]);<br />
while (YES)<br />
{<br />
NSRange r = [self rangeOfString:string options:NSCaseInsensitiveSearch range:range];<br />
if (r.location == NSNotFound) {<br />
break;<br />
}<br />
else<br />
{<br />
[array addObject:[NSValue valueWithRange:r]];<br />
range = NSMakeRange(r.location + 1, [self length] - (r.location + 1) );<br />
}<br />
}<br />
<br />
return array;<br />
}<br />
@end<br />
Je l'ai utiliser pour faire un jeu du pendu. C'est la premiere fois que je crée une "Category" donc je sais pas si je l'ai faite de la bonne façon donc n'hésitez pas à me corriger.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Note que pour ce genre de choses tu peux aussi penser à utiliser NSRegularExpression qui permet déjà de récupérer un NSArray de matches. Mais c'est sûr que pour un matching de chaà®ne sans regex, c'est aussi bien avec ta méthode
Et sinon pour un jeu de pendu, si tu as à détecter uniquement une seule lettre à chaque fois, et donc que la longueur de la chaà®ne à détecter est toujours 1, un NSIndexSet est sans doute plus sympa à manipuler et évite de devoir encapsuler les valeurs dans un NSValue
Ne jamais sous-estimer le pouvoir de CoreFoundation.