Comment supprimer tous les espaces de début d'une chaîne? - rapide
170
J'ai besoin d'un moyen de supprimer le premier caractère d'une chaîne qui est un espace. Je recherche une méthode ou même une extension pour le type String que je peux utiliser pour découper un caractère d'une chaîne.
cela ne fonctionnera que pour les espaces de début et de fin. cela ne supprimera pas les espaces contenus dans la chaîne.
dim
87
si vous voulez supprimer tous les espaces vides, vous pouvez essayer myString.stringByReplacingOccurrencesOfString ("", withString: "")
Lucas
6
Vous pouvez également l'utiliser NSCharacterSet.whitespaceAndNewlineCharacterSet()si vous souhaitez également couper les caractères de nouvelle ligne.
Blip
2
Pour le faire fonctionner avec Swift 3.0 et également supprimer les espaces blancs entre les chaînes, utilisez answer: stackoverflow.com/a/39067610/4886069
2
Utilisateur Swift 3+: yourString.replacingOccurrences (of: "", with: "")
Nadeesha Lakmal
144
La méthode correcte lorsque vous souhaitez supprimer toutes sortes d'espaces blancs (en fonction de cette réponse SO ) est:
Cette réponse a été publiée lorsque la question portait sur la suppression de tous les espaces, la question a été modifiée pour ne mentionner que les espaces de tête. Si vous souhaitez uniquement supprimer les espaces de début, utilisez ce qui suit:
extensionString{func removingLeadingSpaces()->String{guardlet index = firstIndex(where:{!CharacterSet(charactersIn:String($0)).isSubset(of:.whitespaces)})else{returnself}returnString(self[index...])}}
aussi .components (SeparatedBy: .whitespacesAndNewlines) pour les nouvelles lignes aussi
Derek
Cela devrait être un func pas un var
Jakub Truhlář
1
En raison de la logique de la fonctionnalité . Vous créez une propriété calculée alors que vous devez créer une fonction . Il fait smt plutôt que de tenir une valeur ou de la calculer à partir d'une autre. Regardez: stackoverflow.com/questions/24035276/…
@ JakubTruhlář Vous dites "Cela devrait être une fonction et non un var" - cela ressemble beaucoup à ce que vous énoncez un fait, pas votre opinion. Si vous lisez les réponses à la question liée, vous verrez que même si cela «a du sens» pour vous, pour d'autres personnes… pas nécessairement.
Ashley Mills
82
Cette extension de chaîne supprime tous les espaces d'une chaîne, pas seulement les espaces de fin ...
Fonctionne uniquement pour "" (ne prend pas en compte les autres types de whitesapce)
fpg1503
@ fpg1503 quels autres types d'espaces?
Ricardo
Ceux définis sur la catégorie Zs: fileformat.info/info/unicode/category/Zs/list.htm
fpg1503
45
Swift 3
Vous pouvez simplement utiliser cette méthode pour supprimer tous les espaces normaux dans une chaîne (ne prend pas en compte tous les types d'espaces):
let myString =" Hello World ! "let formattedString = myString.replacingOccurrences(of:" ", with:"")
Pour Swift 3.0+, voyez les autres réponses. C'est maintenant une réponse héritée pour Swift 2.x
Comme indiqué ci-dessus, puisque vous êtes intéressé par la suppression du premier caractère, la méthode d'instance .stringByTrimmingCharactersInSet () fonctionnera bien:
Il existe également une méthode d'instance intégrée pour traiter la suppression ou le remplacement de sous-chaînes appelée stringByReplacingOccurrencesOfString (target: String, replacement: String) . Il peut supprimer des espaces ou tout autre modèle qui se produit n'importe où dans votre chaîne
Vous pouvez spécifier des options et des plages, mais vous n'avez pas besoin de:
C'est un moyen facile de supprimer ou de remplacer tout motif répétitif de caractères dans votre chaîne, et peut être enchaîné, bien qu'à chaque fois, il doit passer un autre passage à travers toute votre chaîne, ce qui diminue l'efficacité. Vous pouvez donc faire ceci:
Le chaînage de ces méthodes d'instance String peut parfois être très pratique pour des conversions ponctuelles, par exemple si vous souhaitez convertir un blob NSData court en une chaîne hexadécimale sans espaces sur une ligne, vous pouvez le faire avec l'interpolation String intégrée de Swift et quelques ajustements et remplacement:
J'utiliserais cette extension, pour être flexible et imiter la façon dont d'autres collections le font:
extensionString{func filter(pred:Character->Bool)->String{var res =String()for c inself.characters {if pred(c){
res.append(c)}}return res
}}"this is a String".filter { $0!=Character(" ")}//"thisisaString"
//This function trim only white space:
func trim()->String{returnself.trimmingCharacters(in:CharacterSet.whitespaces)}//This function trim whitespeaces and new line that you enter:
func trimWhiteSpaceAndNewLine()->String{returnself.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)}
Encore une autre réponse, parfois la chaîne d'entrée peut contenir plus d'un espace entre les mots. Si vous avez besoin de standardiser pour n'avoir qu'un seul espace entre les mots, essayez ceci (Swift 4/5)
let inputString =" a very strange text ! "let validInput = inputString.components(separatedBy:.whitespacesAndNewlines).filter { $0.count >0}.joined(separator:" ")
print(validInput)//"a very strange text !"
Fonctionne uniquement pour "" (ne prend pas en compte les autres types de whitesapce)
fpg1503
Parce que votre réponse est fausse. La réponse à laquelle vous avez fourni une mise à jour est également fausse. Il existe plusieurs types d'espaces blancs et c'est pourquoi l'utilisation whitespaceCharacterSetest une bonne pratique.
Réponses:
Pour supprimer les espaces de début et de fin:
Swift 3 / Swift 4:
la source
NSCharacterSet.whitespaceAndNewlineCharacterSet()
si vous souhaitez également couper les caractères de nouvelle ligne.La méthode correcte lorsque vous souhaitez supprimer toutes sortes d'espaces blancs (en fonction de cette réponse SO ) est:
Swift 3.0+ (3.0, 3.1, 3.2, 4.0)
ÉDITER
Cette réponse a été publiée lorsque la question portait sur la suppression de tous les espaces, la question a été modifiée pour ne mentionner que les espaces de tête. Si vous souhaitez uniquement supprimer les espaces de début, utilisez ce qui suit:
la source
Cette extension de chaîne supprime tous les espaces d'une chaîne, pas seulement les espaces de fin ...
Exemple:
la source
Swift 3
Vous pouvez simplement utiliser cette méthode pour supprimer tous les espaces normaux dans une chaîne (ne prend pas en compte tous les types d'espaces):
Le résultat sera:
la source
Vous pouvez également utiliser regex.
la source
Pour Swift 3.0+, voyez les autres réponses. C'est maintenant une réponse héritée pour Swift 2.x
Comme indiqué ci-dessus, puisque vous êtes intéressé par la suppression du premier caractère, la méthode d'instance .stringByTrimmingCharactersInSet () fonctionnera bien:
Vous pouvez également créer vos propres jeux de caractères pour couper les limites de vos chaînes, par exemple:
Il existe également une méthode d'instance intégrée pour traiter la suppression ou le remplacement de sous-chaînes appelée stringByReplacingOccurrencesOfString (target: String, replacement: String) . Il peut supprimer des espaces ou tout autre modèle qui se produit n'importe où dans votre chaîne
Vous pouvez spécifier des options et des plages, mais vous n'avez pas besoin de:
C'est un moyen facile de supprimer ou de remplacer tout motif répétitif de caractères dans votre chaîne, et peut être enchaîné, bien qu'à chaque fois, il doit passer un autre passage à travers toute votre chaîne, ce qui diminue l'efficacité. Vous pouvez donc faire ceci:
... mais cela prendra deux fois plus de temps.
Documentation .stringByReplacingOccurrencesOfString () du site Apple
Le chaînage de ces méthodes d'instance String peut parfois être très pratique pour des conversions ponctuelles, par exemple si vous souhaitez convertir un blob NSData court en une chaîne hexadécimale sans espaces sur une ligne, vous pouvez le faire avec l'interpolation String intégrée de Swift et quelques ajustements et remplacement:
la source
Pour Swift 3.0
la source
Swift 4
L'excellent cas pour utiliser l'expression régulière:
la source
J'utiliserais cette extension, pour être flexible et imiter la façon dont d'autres collections le font:
la source
Si vous souhaitez supprimer des espaces à l'avant (et à l'arrière) mais pas au milieu, vous devez utiliser
stringByTrimmingCharactersInSet
Si vous souhaitez supprimer des espaces de n'importe où dans la chaîne, vous pouvez consulter stringByReplacing ...
la source
" First Word "
sorties d' exemple"First Word"
).Swift 4, 4.2 et 5
Supprimer l'espace de l'avant et de l'extrémité uniquement
Supprimer les espaces de partout dans la chaîne
la source
Vous pouvez également essayer ceci
la source
Essayez la programmation fonctionnelle pour supprimer les espaces blancs:
la source
la source
Si quelqu'un supprime l'espace supplémentaire de la chaîne, par exemple =
"This is the demo text remove extra space between the words."
Vous pouvez utiliser cette fonction dans Swift 4.
et le résultat sera
la source
Salut, c'est peut-être tard mais ça vaut le coup d'essayer. Cela provient d'un fichier de terrain de jeu. Vous pouvez en faire une extension String.
Ceci est écrit dans Swift 5.3
Méthode 1:
Méthode 2:
la source
Version Swift 3
la source
Rognage des espaces blancs dans Swift 4
la source
Encore une autre réponse, parfois la chaîne d'entrée peut contenir plus d'un espace entre les mots. Si vous avez besoin de standardiser pour n'avoir qu'un seul espace entre les mots, essayez ceci (Swift 4/5)
la source
Pour moi, la ligne suivante permet de supprimer les espaces blancs.
la source
la source
Version Swift 3 de la réponse de BadmintonCat
la source
whitespaceCharacterSet
est une bonne pratique.la source
Pour supprimer tous les espaces de la chaîne:
la source