Nombre d'Occurrences d'un Caractère dans NSString
J'ai un NSString
ou NSMutableString
et voudrait obtenir le nombre d'occurrences d'un caractère particulier.
J'ai besoin de faire cela pour un grand nombre de caractères (majuscules, les caractères en anglais dans ce cas, donc ce serait bien pour qu'il soit rapide.
Vous devez vous connecter pour publier un commentaire.
replaceOccurrencesOfString:withString:options:plage:
retourne le nombre de caractères remplacés dans unNSMutableString
.Vous pouvez le faire en une seule ligne. Par exemple, ce qui compte le nombre d'espaces:
yourString
?Essayer cette catégorie sur NSString:
Celui-ci est environ 5 fois plus rapide que la
componentsSeparatedByString:
approche.Chaque fois que vous êtes à la recherche de choses dans un
NSString
, essayez d'utiliserNSScanner
premier.setCharactersToBeSkipped:(NSCharacterSet *)skipSet
avecnil
comme leskipSet
- et laNSScanner
de ne pas ignorer tous les caractères.Aujourd'hui, la première chose qui vient à mon esprit pour quelque chose comme ça: NSCountedSet
journaux:
Votre solution ne fonctionne pas pour moi, j'ai ajouté une condition dans la boucle pour incrémenter numberOfChar seulement si mainScanner a atteint la fin de la chaîne :
Noter que c'est une solution rapide, je n'ai pas le temps de faire une solution élégante...
Je serais probablement utiliser
NSString rangeOfCharacterFromSet:
ou
rangeOfCharacterFromSet:options:range::
où le jeu est le jeu de caractères que vous recherchez. Il revient avec l'emplacement du premier caractère correspondant à l'ensemble. Gardez tableau ou un dictionnaire et d'incrémenter le compteur de caractères, puis répétez.
L'exemple avec le Scanner a été s'écraser sur iPhone. J'ai trouvé cette solution :
Il a travaillé pour moi sans crash. J'espère que ça peut aider !
Ici est une Swift 3 version de travail, pour NSRange, Plage, String et NSString! Enjoy 🙂