web-dev-qa-db-fra.com

Obtenir l'index d'un caractère dans NSString avec décalage et utiliser la sous-chaîne dans Objective-C

J'ai une chaîne!

   NSString *myString=[NSString stringWithFormat:@"This is my lovely string"];

Ce que je veux faire c'est:

  1. En supposant que le premier caractère de la chaîne est à l'index 0. Accédez au 11e caractère (c'est-à-dire "l" dans le cas ci-dessus) et recherchez la position du premier espace apparaissant à l'envers (dans la chaîne ci-dessus, la position du premier espace apparaissant) si on recule de 'l' est en position 10). Appelons l'index de cet espace "leSpace" ayant la valeur 10.
  2. Sous-chaîne la chaîne restante à une nouvelle chaîne en utilisant ...

    [myString substringFromIndex:leSpace]
    

... J'espère avoir bien expliqué. S'il vous plaît, aidez-vous, pouvez-vous écrire un extrait ou quelque chose pour m'aider à faire cette tâche?

21
Umair Khan Jadoon
- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)aRange

Pour les options, utilisez: NSBackwardsSearch

NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch range:NSMakeRange(0, 11)];

Exemple:

NSString *myString=[NSString stringWithFormat:@"This is my lovely string"];
NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch range:NSMakeRange(0, 11)];
NSLog(@"range.location: %lu", range.location);
NSString *substring = [myString substringFromIndex:range.location+1];
NSLog(@"substring: '%@'", substring);

Sortie NSLog:

range.location: 10
substring: 'lovely string'

Bien sûr, il devrait y avoir une erreur de vérification que range.location n'est pas égal à NSNotFound

51
zaph