@mattdipasquale trim est un nom très courant pour cette opération
Austin
Réponses:
831
Voici comment supprimer tous les espaces blancs du début et de la fin d'un fichier String.
(Exemple testé avec Swift 2.0 .)
let myString =" \t\t Let's trim all the whitespace \n \t \n "let trimmedString = myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())//Returns"Let's trim all the whitespace"
(Exemple testé avec Swift 3+ .)
let myString =" \t\t Let's trim all the whitespace \n \t \n "let trimmedString = myString.trimmingCharacters(in:.whitespacesAndNewlines)//Returns"Let's trim all the whitespace"
Ne fonctionnera pas sur swif 1.2, car il n'y a pas de convention automatique entre String et NSString.
elcuco
5
Cela fonctionne très bien dans Swift 1.2 - l'objet String a la méthode stringByTrimmingCharactersInSet (ce n'est pas une exclusivité NSString)
Ben Dodson
8
Dans Swift 3.0, c'est: let trimmedString = myString.trimmingCharacters (in: .whitespaces)
kikettas
6
Cela ne signifie pas qu'il est obsolète. Tout le monde n'utilise pas encore Swift 3.0.
c.dunlap
2
Dans Swift 3.0, cela ne supprimera pas les espaces blancs entre les chaînes. Cela supprimera uniquement les espaces blancs de début et de fin. Pour cela, référez-vous à cette réponse: stackoverflow.com/a/39067610/4886069
130
Mettez ce code sur un fichier de votre projet, quelque chose comme Utils.swift:
Est-ce sûr? Comment empêcher une collision de nom de méthode si Apple ou une bibliothèque tierce ajoute la même méthode String?
ma11hew28
12
Les extensions sont sûres - et en fait Apple en fait un usage prolifique dans leurs API internes. Vous ne pouvez pas empêcher les collisions de noms, et c'est en fait bien. Vous obtiendrez une erreur de compilation lorsque Apple ajoutera enfin une méthode trim () et vous saurez que votre extension n'est plus requise. Les extensions sont assez élégantes et placent les méthodes là où vous en avez besoin plutôt que certaines classes utilitaires obscures comme StringUtils - le problème que j'ai est lorsqu'une classe n'a pas la méthode dont j'ai besoin parce qu'un autre framework n'a pas été importé qui y a ajouté des extensions.
absmiths
3
Hey, dans Swift 3 devrait être de retourreturn self.trimmingCharacters(in: .whitespacesAndNewlines)
7
laissez result = "Hello World" .trim () // result = "HelloWorld" cela ne supprimera pas les espaces blancs contenus dans la chaîne. ne supprimera que les espaces de début et de fin.
Sahil
2
cela ne supprimera pas les espaces entre les chaînes. Il supprime uniquement les espaces de début et de fin. La meilleure façon de supprimer les espaces entre les chaînes est d'utiliser votre texte? .ReplacingOccurrences (of: "", with: "") au lieu d'utiliser trimmingCharacters
Que se passe-t-il si je souhaite uniquement supprimer les espaces de fin et de début?
Suragch
1
Je suis nouveau dans Swift 3 extensions. Si une bibliothèque modifie String et que je modifie également String, est-il possible d'obtenir des collisions? Et si les futures versions de swift ad une méthode trim ()? Donc .. en gros .. les extensions sont-elles sûres à utiliser comme ça?
Gattster
1
il est possible d'obtenir des collisions.
Alex Brown
laissez result = "Hello World" .trim () // result = "HelloWorld" cela ne supprimera pas les espaces blancs contenus dans la chaîne. ne supprimera que les espaces de début et de fin
Sahil
45
Swift 5 et 4.2
let trimmedString =" abc ".trimmingCharacters(in:.whitespaces)//trimmedString =="abc"
C'est en fait "whitespacesAndNewlines", haha, on est à gauche.
RainCast
9
Oui, vous pouvez le faire comme ceci:
var str =" this is the answer "
str = str.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)
print(srt)//"this is the answer"
CharacterSet est en fait un outil vraiment puissant pour créer une règle de découpage avec beaucoup plus de flexibilité qu'un ensemble prédéfini comme .whitespacesAndNewlines.
Par exemple:
var str =" Hello World !"let cs =CharacterSet.init(charactersIn:" !")
str = str.trimmingCharacters(in: cs)
print(str)//"Hello World"
Si vous avez entré un bloc de phrase / texte et que vous souhaitez enregistrer uniquement la longueur spécifiée hors de ce texte. Ajoutez l'extension suivante à la classe
var str ="Lorem Ipsum is simply dummy text of the printing and typesetting industry."//str is length 74
print(str)//O/P: Lorem Ipsum is simply dummy text of the printing and typesetting industry.
str = str.trunc(40)
print(str)//O/P:LoremIpsumis simply dummy text of the
extensionString{/// EZSE: Trims white space and new line characters
publicmutatingfunc trim(){self=self.trimmed()}/// EZSE: Trims white space and new line characters, returns a new string
publicfunc trimmed()->String{returnself.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())}}
J'ai créé cette fonction qui permet d'entrer une chaîne et retourne une liste de chaîne coupée par n'importe quel caractère
funcTrim(input:String, character:Character)->[String]{var collection:[String]=[String]()var index =0var copy = input
let iterable = input
var trim = input.startIndex.advancedBy(index)for i in iterable.characters
{if(i == character){
trim = input.startIndex.advancedBy(index)// apennding to the list
collection.append(copy.substringToIndex(trim))//cut the input
index +=1
trim = input.startIndex.advancedBy(index)
copy = copy.substringFromIndex(trim)
index =0}else{
index +=1}}
collection.append(copy)return collection
}
as n'a pas trouvé de moyen de le faire dans swift (compile et fonctionne parfaitement dans swift 2.0)
pouvez-vous définir ce que vous entendez par «couper», avec un exemple. Puisque votre type de retour est [String], vous ne pouvez pas implémenter ce que l'OP a demandé. (qui renvoie une chaîne)
Réponses:
Voici comment supprimer tous les espaces blancs du début et de la fin d'un fichier
String
.(Exemple testé avec Swift 2.0 .)
(Exemple testé avec Swift 3+ .)
J'espère que cela t'aides.
la source
Mettez ce code sur un fichier de votre projet, quelque chose comme Utils.swift:
Vous pourrez donc faire ceci:
Solution Swift 3.0
Vous pourrez donc faire ceci:
la source
String
?return self.trimmingCharacters(in: .whitespacesAndNewlines)
Dans Swift 3.0
Et vous pouvez appeler
la source
Swift 5 et 4.2
la source
Swift 3
la source
Oui, vous pouvez le faire comme ceci:
CharacterSet est en fait un outil vraiment puissant pour créer une règle de découpage avec beaucoup plus de flexibilité qu'un ensemble prédéfini comme .whitespacesAndNewlines.
Par exemple:
la source
Tronquer la chaîne à une longueur spécifique
Si vous avez entré un bloc de phrase / texte et que vous souhaitez enregistrer uniquement la longueur spécifiée hors de ce texte. Ajoutez l'extension suivante à la classe
Utilisation
la source
Vous pouvez utiliser la méthode trim () dans une extension Swift String que j'ai écrite https://bit.ly/JString .
la source
Une autre manière similaire:
Utilisation:
la source
Tiré de ce repo à moi: https://github.com/goktugyil/EZSwiftExtensions/commit/609fce34a41f98733f97dfd7b4c23b5d16416206
la source
Dans Swift3 XCode 8 Final
Notez que
CharacterSet.whitespaces
n'est plus une fonction!(Ni l'un ni l'autre
NSCharacterSet.whitespaces
)la source
// Swift 4.0 Supprimer des espaces et de nouvelles lignes
la source
Vous pouvez également envoyer des caractères que vous souhaitez couper
la source
J'ai créé cette fonction qui permet d'entrer une chaîne et retourne une liste de chaîne coupée par n'importe quel caractère
as n'a pas trouvé de moyen de le faire dans swift (compile et fonctionne parfaitement dans swift 2.0)
la source
N'oubliez pas de
import Foundation
ouUIKit
.Résultat:
Sinon, vous obtiendrez:
la source