Comment puis-je supprimer le jeu de caractères d'espacement d'une chaîne tout en conservant les espaces simples entre les mots. Je voudrais supprimer les espaces doubles et triples, etc ...
extension String {
func condensingWhitespace() -> String {
return self.components(separatedBy: .whitespacesAndNewlines)
.filter { !$0.isEmpty }
.joined(separator: " ")
}
}
let string = " Lorem \r ipsum dolar sit amet. "
print(string.condensingWhitespace())
// Lorem ipsum dolar sit amet.
NSCharacterSet
rend ceci facile:
func condenseWhitespace(string: String) -> String {
let components = string.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).filter({!isEmpty($0)})
return join(" ", components)
}
var string = " Lorem \r ipsum dolar sit amet. "
println(condenseWhitespace(string))
// Lorem ipsum dolar sit amet.
ou si vous préférez une extension String
:
extension String {
func condenseWhitespace() -> String {
let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).filter({!Swift.isEmpty($0)})
return " ".join(components)
}
}
var string = " Lorem \r ipsum dolar sit amet. "
println(string.condenseWhitespace())
// Lorem ipsum dolar sit amet.
Tout crédit à la NSHipster post sur NSCharacterSet .
Swift 2 code compatible:
extension String {
var removeExcessiveSpaces: String {
let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
let filtered = components.filter({!$0.isEmpty})
return filtered.joinWithSeparator(" ")
}
}
Usage:
let str = "test spaces too many"
print(str.removeExcessiveSpaces)
// Output: test spaces too many
componentsSeparatedByCharactersInSet(:)
avec Swift afin de couper votre chaîne de ses caractères d’espace redondants.Les étapes à suivre ici consistent à extraire de votre chaîne un tableau de String
dans lequel tous les espaces blancs ont été remplacés par des chaînes vides, à filtrer ce tableau dans un nouveau tableau de String
où toutes les chaînes vides ont été supprimées et à rejoindre toutes les chaînes de ce tableau. dans une nouvelle chaîne en les séparant par un caractère d'espacement.
Le code de Playground suivant montre comment procéder:
import Foundation
let string = " Lorem ipsum dolar sit amet. "
let newString = string
.componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
.filter { !$0.isEmpty }
.joinWithSeparator(" ")
print(newString) // prints "Lorem ipsum dolar sit amet."
Si vous devez répéter cette opération, vous pouvez refactoriser votre code dans une extension String
:
import Foundation
extension String {
func condenseWhitespace() -> String {
return componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
.filter { !$0.isEmpty }
.joinWithSeparator(" ")
}
}
let string = " Lorem ipsum dolar sit amet. "
let newString = string.condenseWhitespace()
print(newString) // prints "Lorem ipsum dolar sit amet."
Foundation
.Les étapes ici consistent à obtenir de votre chaîne un tableau de String.CharacterView
où tous les caractères d'espacement ont été supprimés, à mapper ce tableau de String.CharacterView
à un tableau de String
et à joindre toutes les chaînes de ce tableau dans une nouvelle chaîne tout en les séparant par un caractère d'espacement.
Le code de Playground suivant montre comment procéder:
let string = " Lorem ipsum dolar sit amet. "
let newString = string.characters
.split { $0 == " " }
.map { String($0) }
.joinWithSeparator(" ")
print(newString) // prints "Lorem ipsum dolar sit amet."
Si vous devez répéter cette opération, vous pouvez refactoriser votre code dans une extension String
:
extension String {
func condenseWhitespace() -> String {
return characters
.split { $0 == " " }
.map { String($0) }
.joinWithSeparator(" ")
}
}
let string = " Lorem ipsum dolar sit amet. "
let newString = string.condenseWhitespace()
print(newString) // prints "Lorem ipsum dolar sit amet."
Une autre option consiste à utiliser la recherche par expression régulière pour remplacer toutes les occurrences D'un ou de plusieurs caractères d'espacement par un seul espace . Exemple (Swift 3):
let string = " Lorem \r ipsum dolar sit amet. "
let condensed = string
.replacingOccurrences(of: "\\s+", with: " ", options: .regularExpression)
.trimmingCharacters(in: .whitespacesAndNewlines)
print(condensed.debugDescription) // "Lorem ipsum dolar sit amet."
Pour Swift 3.1
extension String {
var trim : String {
get {
return characters
.split { $0 == " " || $0 == "\r" }
.map { String($0) }
.joined(separator: " ")
}
}
}
let string = " Lorem \r ipsum dolar sit amet. "
print(string.trim)
Est-ce que la sortie:
Lorem ipsum dolar sit amet.