string - quitar - Eliminar el conjunto de caracteres de espacios en blanco de la cadena excluyendo el espacio
quitar espacios en blanco java (6)
Swift 3
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.
Legado Swift
NSCharacterSet
hace esto fácil:
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.
o si lo desea como una extensión de 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.
Todo el crédito a la publicación NSHipster en NSCharacterSet .
¿Cómo puedo eliminar el conjunto de caracteres de espacios en blanco de una cadena pero mantener los espacios individuales entre las palabras? Me gustaría eliminar espacios dobles y espacios triples, etc ...
Cuando tiene un fondo de Objective-C / Foundation, puede parecer obvio utilizar componentsSeparatedByCharactersInSet(:)
con Swift para recortar la cadena de sus caracteres de espacio en blanco redundantes.
Los pasos aquí son obtener de su cadena una matriz de String
donde todos los caracteres de espacio en blanco han sido reemplazados por cadenas vacías, para filtrar esta matriz en una nueva matriz de String
donde se han eliminado todas las cadenas vacías y unirse a todas las cadenas de esta matriz en una nueva cadena mientras los separa por un carácter de espacio en blanco.
El siguiente código de Playground muestra cómo hacerlo de esta manera:
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 necesita repetir esta operación, puede refactorizar su código en una extensión de 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."
Sin embargo, con Swift, hay otra forma que es realmente funcional y que no requiere que importes Foundation
.
Los pasos aquí son para obtener de su cadena una matriz de String.CharacterView
donde se han eliminado todos los caracteres de espacio en blanco, para asignar esta matriz de String.CharacterView
a una matriz de String
y para unir todas las cadenas de esta matriz en una nueva cadena mientras separándolos por un carácter de espacio en blanco.
El siguiente código de Playground muestra cómo hacerlo de esta manera:
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 necesita repetir esta operación, puede refactorizar su código en una extensión de 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."
Código compatible con Swift 2:
extension String {
var removeExcessiveSpaces: String {
let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
let filtered = components.filter({!$0.isEmpty})
return filtered.joinWithSeparator(" ")
}
}
Uso:
let str = "test spaces too many"
print(str.removeExcessiveSpaces)
// Output: test spaces too many
Otra opción es utilizar la búsqueda de expresiones regulares para reemplazar todas las apariciones de uno o más caracteres de espacio en blanco por un solo espacio. Ejemplo (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."
Puedes usar el método trim () en una extensión Swift String que escribí https://bit.ly/JString .
var string = "hello "
var trimmed = string.trim()
println(trimmed)// "hello"
Para 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)
Saldrá:
Lorem ipsum dolar sit amet.