validar quitar poner los espacios espacio eliminar detectar contar como caracteres blanco string swift whitespace

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.