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!"
Selon @Mathieu Godart, c'est la meilleure réponse, mais certaines lignes manquent, toutes les réponses se contentent de réduire les espaces entre les mots, mais lorsque des tabulations sont présentes à la place des espaces, comme ceci : " this is text \t , and\tTab between , so on " sur trois lignes de code nous aurons : la chaîne que nous voulons réduire les espaces blancs
NSString * str_aLine = @" this is text \t , and\tTab between , so on ";
// remplacer les tabulations par des espaces
str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@"\t" withString:@" "];
// réduire les espaces à un seul espace
str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@" +" withString:@" "
options:NSRegularExpressionSearch
range:NSMakeRange(0, str_aLine.length)];
// supprimer les espaces au début et à la fin de la chaîne
str_aLine = [str_aLine stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
le résultat est
"this is text , and Tab between , so on"
sans remplacer la tabulation, le résultat serait :
"this is text , and Tab between , so on"
Vous pouvez également utiliser un simple argument while. Il n'y a pas de magie RegEx, donc peut-être est-il plus facile à comprendre et à modifier à l'avenir :
while([votreObjetNSString replaceOccurrencesOfString:@" "
withString:@" "
options:0
range:NSMakeRange(0, [votreObjetNSString length])] > 0);
Solution alternative: obtenez une copie d'OgreKit (la bibliothèque d'expressions régulières Cocoa).
L'ensemble de la fonction est donc :
NSString *theStringTrimmed =
[theString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
OGRegularExpression *regex =
[OGRegularExpression regularExpressionWithString:@"\s+"];
return [regex replaceAllMatchesInString:theStringTrimmed withString:@" "]);
Court et simple.
Si vous recherchez la solution la plus rapide, une série d'instructions soigneusement construite utilisant NSScanner
fonctionnerait probablement le mieux, mais ce ne serait nécessaire que si vous prévoyez de traiter de gros blocs de texte (plusieurs mégaoctets).
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.