74 votes

Supprimer les caractères non alphanumériques d'un NSString

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.

149voto

user102008 Points 8748

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:@""];
 

19voto

Jeff Kelley Points 12893

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 .

1voto

ennuikiller Points 28005

Cela vous aidera, mais lisez-le quand vous n'êtes pas fatigué !!

Supprimer un jeu de caractères d'une chaîne NSString

1voto

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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X