Considérez l'exemple suivant :
" Hello this is a long string! "
Je veux le convertir en :
"Hello this is a long string!"
Considérez l'exemple suivant :
" Hello this is a long string! "
Je veux le convertir en :
"Hello this is a long string!"
Cela devrait le faire...
NSString *s = @"this is a string with lots of white space";
NSArray *comps = [s componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSMutableArray *words = [NSMutableArray array];
for(NSString *comp in comps) {
if([comp length] > 1)) {
[words addObject:comp];
}
}
NSString *result = [words componentsJoinedByString:@" "];
Une autre option pour les regex est RegexKitLite, qui est très facile à intégrer dans un projet iPhone :
[theString stringByReplacingOccurencesOfRegex:@" +" withString:@" "];
Voici un extrait d'une extension NSString
, où "self"
est l'instance de NSString
. Il peut être utilisé pour condenser les espaces blancs contigus en un seul espace en passant [NSCharacterSet whitespaceAndNewlineCharacterSet]
et ' '
comme arguments.
- (NSString *) stringCollapsingCharacterSet: (NSCharacterSet *) characterSet toCharacter: (unichar) ch {
int fullLength = [self length];
int length = 0;
unichar *newString = malloc(sizeof(unichar) * (fullLength + 1));
BOOL isInCharset = NO;
for (int i = 0; i < fullLength; i++) {
unichar thisChar = [self characterAtIndex: i];
if ([characterSet characterIsMember: thisChar]) {
isInCharset = YES;
}
else {
if (isInCharset) {
newString[length++] = ch;
}
newString[length++] = thisChar;
isInCharset = NO;
}
}
newString[length] = '\0';
NSString *result = [NSString stringWithCharacters: newString length: length];
free(newString);
return result;
}
Suivant les deux expressions régulières fonctionneraient en fonction des besoins
Ensuite, appliquez la méthode d'instance de nsstring stringByReplacingOccurrencesOfString:withString:options:range:
pour les remplacer par un seul espace blanc.
par exemple
[string stringByReplacingOccurrencesOfString:regex withString:@" " options:NSRegularExpressionSearch range:NSMakeRange(0, [string length])];
Remarque : Je n'ai pas utilisé la bibliothèque 'RegexKitLite' pour la fonctionnalité ci-dessus pour iOS 5.x et versions ultérieures.
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.