Je cherche un moyen rapide et facile de supprimer les caractères non alphanumériques d'un NSString
. Probablement quelque chose utilisant NSCharacterSet
, mais je suis fatigué et rien ne semble renvoyer une chaîne contenant uniquement les caractères alphanumériques d'une chaîne.
Réponses
Trop de publicités?Nous pouvons le faire en scindant puis en rejoignant. Nécessite OS X 10.5+ pour les composantsSeparatedByCharactersInSet:
NSCharacterSet *charactersToRemove = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
NSString *trimmedReplacement = [[someString componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@""];
Ce que j'ai fini par créer, c'est créer un NSCharacterSet et la méthode -invertedSet
que j'ai trouvée (c'est étonnant ce qu'une heure de sommeil supplémentaire permet d'obtenir des capacités de lecture de documentation). Voici l'extrait de code, en supposant que someString
est la chaîne à partir de laquelle vous souhaitez supprimer les caractères non alphanumériques:
NSCharacterSet *charactersToRemove =
[[ NSCharacterSet alphanumericCharacterSet ] invertedSet ];
NSString *trimmedReplacement =
[ someString stringByTrimmingCharactersInSet:charactersToRemove ];
trimmedReplacement
contiendra alors les caractères alphanumériques de someString
.
Une catégorie de nettoyage
J'ai un appel de méthode stringByStrippingCharactersInSet:
et stringByCollapsingWhitespace
qui pourrait être pratique pour une visite en personne.
@implementation NSString (Cleanup)
- (NSString *)clp_stringByStrippingCharactersInSet:(NSCharacterSet *)set
{
return [[self componentsSeparatedByCharactersInSet:set] componentsJoinedByString:@""];
}
- (NSString *)clp_stringByCollapsingWhitespace
{
NSArray *components = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
components = [components filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self <> ''"]];
return [components componentsJoinedByString:@" "];
}
@end