Prenons l'exemple suivant:
" Hello this is a long string! "
Je veux convertir cela en:
"Hello this is a long string!"
objective-c
ios
nsstring
hfossli
la source
la source
Regex et NSCharacterSet sont là pour vous aider. Cette solution supprime les espaces blancs de début et de fin ainsi que plusieurs espaces.
La journalisation
final
donneModèles de regex alternatifs possibles:
[ ]+
[ \\t]+
\\s+
Aperçu des performances
La facilité d'extension, les performances, le nombre de lignes de code et le nombre d'objets créés rendent cette solution appropriée.
la source
stringByReplacingOccurrencesOfString:
. Je ne peux pas croire que je ne le savais pas.En fait, il existe une solution très simple à cela:
( Source )
la source
Avec une regex, mais sans besoin de framework externe:
la source
NSRegularExpressionSearch
dit que cela ne fonctionne qu'avec lesrangeOfString:...
méthodesUne solution en une seule ligne:
la source
Cela devrait le faire ...
la source
Une autre option pour regex est RegexKitLite , qui est très facile à intégrer dans un projet iPhone:
la source
Essaye ça
la source
Voici un extrait d'une
NSString
extension, où se"self"
trouve l'NSString
instance. Il peut être utilisé pour réduire les espaces blancs contigus en un seul espace en transmettant[NSCharacterSet whitespaceAndNewlineCharacterSet]
et' '
aux deux arguments.la source
Solution alternative: procurez-vous une copie d'OgreKit (la bibliothèque d'expressions régulières Cocoa).
La fonction entière est alors:
Court et doux.
Si vous recherchez la solution la plus rapide, une série d'instructions soigneusement élaborées fonctionnera
NSScanner
probablement mieux, mais cela ne sera nécessaire que si vous prévoyez de traiter d'énormes blocs de texte (plusieurs mégaoctets).la source
selon @Mathieu Godart est la meilleure réponse, mais il manque une ligne, toutes les réponses réduisent juste l'espace entre les mots, mais si elles ont des tabulations ou ont une tabulation en place, comme ceci: "c'est du texte \ t, et \ tTab entre, ainsi de suite "en trois lignes de code, nous allons: la chaîne que nous voulons réduire les espaces blancs
le résultat est
sans remplacer l'onglet, le résultat sera:
la source
Vous pouvez également utiliser un simple argument while. Il n'y a pas de magie RegEx là-dedans, alors c'est peut-être plus facile à comprendre et à modifier à l'avenir:
la source
Suivre deux expressions régulières fonctionnerait selon les besoins
Appliquez ensuite la méthode d'instance de nsstring
stringByReplacingOccurrencesOfString:withString:options:range:
pour les remplacer par un seul espace blanc.par exemple
Remarque: je n'ai pas utilisé la bibliothèque 'RegexKitLite' pour la fonctionnalité ci-dessus pour iOS 5.x et supérieur.
la source