2010-03-04 5 views
12

J'ai cherché pendant des heures maintenant et n'ai pas trouvé de solution à mon problème. J'ai un NSString qui ressemble à ce qui suit:Position d'un caractère dans un NSString ou NSMutableString

"entretoise": [ "value1", "valeur2"], "entretoise": [ "value1", "valeur2"], ...

Ce que je veux faire est de supprimer les caractères [] de la chaîne. Cela semble impossible avec objectif-c. La plupart des autres langages de programmation offrent des fonctions comme strpos ou indexOf qui me permettent de rechercher un caractère ou une chaîne et de localiser sa position. Mais il semble que rien ne soit comme ça dans l'objectif-c.

Est-ce que quelqu'un a une idée sur la façon de supprimer ces caractères? De plus, il y a [] caractères dans la chaîne qui doivent rester, donc je ne peux pas simplement utiliser NSMutableString stringByReplacingOccurencesOfString: withString. Je dois d'abord rechercher la chaîne d'espacement, puis supprimer seulement les deux prochains [] caractères.

Merci de votre aide.

Répondre

22

Pour rechercher les occurrences d'une chaîne dans une chaîne, utilisez les méthodes rangeOfXXX de la classe NSString. Ensuite, vous pouvez construire NSRanges pour extraire des sous-chaînes, etc.

Cet exemple supprime uniquement la première série de crochets d'ouverture/fermeture de votre chaîne exemple ...

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]"; 
NSLog(@"%@", original); 

NSRange startRange = [original rangeOfString:@"\["]; 
NSRange endRange = [original rangeOfString:@"]"]; 

NSRange searchRange = NSMakeRange(0, endRange.location); 
NSString *noBrackets = [original stringByReplacingOccurrencesOfString:@"\[" withString:@"" options:0 range:searchRange]; 
noBrackets = [noBrackets stringByReplacingOccurrencesOfString:@"]" withString:@"" options:0 range:searchRange]; 
NSLog(@"{%@}", noBrackets); 

Le String Programming Guide a plus de détails.
Vous pouvez également utiliser la classe NSScanner.

4

Cela m'a travaillé pour d'extraire tout à l'index d'un personnage, dans ce cas « [ »:

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]"; 
NSRange range = [original rangeOfString:@"\["]; 
NSString *toBracket = [NSString stringWithString :[original substringToIndex:range.location] ]; 
NSLog(@"toBracket: %@", toBracket); 
Questions connexes