2010-06-10 3 views
1

J'ai une petite question, j'ai un objet NSString (\ n "1 Infinite Loop", \ n "Cupertino, CA 95014", \ n USA \ n)Comment obtenir une sous-chaîne à partir d'une chaîne?

et je veux la présente sous-chaîne dans 2 . guillemet et première virgule de 2 guillemet (Ex.Cupertino) de cette chaîne (Remarque: Ma chaîne est dynamique)

Jusqu'à présent, j'ai utilisé stringByReplacingOccurrencesOfString: et en mesure d'obtenir « 1InfiniteLoop » « CupertinoCA95014 » USA

Mais toujours pas obtenir Cupertino.

Une autre méthode peut-elle résoudre ce problème?

Répondre

13

Utilisez un substringWithRange::

NSRange r = NSMakeRange(20, 29); 
NSString *cup = [yourString substringWithRange: r]; 

Après l'explication dans votre commentaire, je dirais que

NSString *cup = (NSString*)[[yourString componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString: @",\""]] objectAtIndex: 4]; 
+0

salut luvieere, merci pour la réponse mais je veux obtenir la sous-chaîne présente dans le début de la deuxième citation double et la première virgule de double citation (Ex.Cupertino) et comme ma chaîne est dynamique, je ne peux pas fixer la gamme pour il. – raaz

+0

@raaz vérifier pour voir la nouvelle solution – luvieere

+0

Salut Luvieere, Il fonctionne comme un charme. Merci pour l'aide – raaz

1

Cela dépend beaucoup de la façon cohérente la structure de votre chaîne d'origine est en termes de les caractères de délimitation.

Si ce sera toujours exactement tel que posté, la réponse de luvieere est très agréable et compact.

Si la mise en page sera toujours cohérente, mais le contenu de chaque chaîne ne peut pas - par exemple, si la première ligne d'adresse peut contenir une virgule - il serait préférable d'utiliser deux passes:

// remember, kids: hard coded number literals are evil 
NSString* secondQuotedString = (NString*)[[componentsSeparatedByString:@"\""] objectAtIndex:3]; 
NSString* upToComma = (NString*)[[componentsSeparatedByString:@","] objectAtIndex:0]; 

Si la structure imbriquée n'est pas fiable (par exemple, s'il existe des caractères de guillemets échappés dans les chaînes), vous devrez effectuer une analyse supplémentaire pour éviter les problèmes.

Questions connexes