@mattdipasquale trim es un nombre muy común para esta operación
Austin
Respuestas:
831
A continuación se explica cómo eliminar todo el espacio en blanco desde el principio y el final de a String.
(Ejemplo probado con 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"
(Ejemplo probado con 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"
No funcionará en swif 1.2, ya que no hay una convención automática de String a NSString.
elcuco
55
Funciona bien en Swift 1.2: el objeto String tiene el método stringByTrimmingCharactersInSet (no es exclusivo de NSString)
Ben Dodson
8
En Swift 3.0 es: let trimmedString = myString.trimmingCharacters (en: .whitespaces)
kikettas
66
Eso no significa que esté desactualizado. No todos están usando Swift 3.0 todavía.
c.dunlap
2
En Swift 3.0, esto no eliminará los espacios en blanco entre las cadenas. Solo eliminará los espacios en blanco iniciales y finales. Para eso, consulte esta respuesta: stackoverflow.com/a/39067610/4886069
130
Pon este código en un archivo en tu proyecto, algo como Utils.swift:
¿Eso es seguro? ¿Cómo evito la colisión de un nombre de método si Apple o alguna biblioteca de terceros agrega el mismo método String?
ma11hew28
12
Las extensiones son seguras, y de hecho Apple las utiliza prolíficamente en sus API internas. No puede evitar las colisiones de nombres, y esto es realmente bueno. Obtendrá un error de compilación cuando Apple finalmente agregue un método trim () y sabrá que su extensión ya no es necesaria. Las extensiones son bastante elegantes y ponen métodos donde los necesita en lugar de alguna clase de utilidad oscura como StringUtils: el problema que tengo es cuando una clase no tiene un método que necesito porque no se importó otro marco que le agregó extensiones.
Herreros
3
Hola, en Swift 3 debería ser devueltoreturn self.trimmingCharacters(in: .whitespacesAndNewlines)
77
let result = "Hello World" .trim () // result = "HelloWorld" esto no eliminará los espacios en blanco contenidos en la cadena. eliminará solo los espacios iniciales y finales.
Sahil
2
esto no eliminará espacios entre cadenas. Solo elimina el espacio inicial y final. Entonces, ¿la mejor manera de eliminar espacios entre cadenas es usar su texto? .ReplacingOccurrences (of: "", with: "") en lugar de usar trimmingCharacters
¿Qué sucede si solo quiero recortar los espacios en blanco iniciales y finales?
Suragch
1
Soy nuevo en swift 3 extensiones. Si una biblioteca modifica String, y yo también modifico String, ¿es posible obtener colisiones? ¿Qué pasa si las versiones futuras de swift ad un método trim ()? Entonces ... básicamente ... ¿son seguras de usar extensiones como esta?
Gattster
1
Es posible obtener colisiones.
Alex Brown
let result = "Hello World" .trim () // result = "HelloWorld" esto no eliminará los espacios en blanco contenidos en la cadena. eliminará solo los espacios iniciales y finales
Sahil
45
Swift 5 y 4.2
let trimmedString =" abc ".trimmingCharacters(in:.whitespaces)//trimmedString =="abc"
En realidad son "espacios en blanco y nuevas líneas", jaja, queda uno.
RainCast
9
Sí, puede hacerlo así:
var str =" this is the answer "
str = str.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)
print(srt)//"this is the answer"
CharacterSet es en realidad una herramienta realmente poderosa para crear una regla de recorte con mucha más flexibilidad que un conjunto predefinido como .whitespacesAndNewlines.
Por ejemplo:
var str =" Hello World !"let cs =CharacterSet.init(charactersIn:" !")
str = str.trimmingCharacters(in: cs)
print(str)//"Hello World"
var str ="Lorem Ipsum is simply dummy text of the printing and typesetting industry."//str is length 74print(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())}}
Creé esta función que permite ingresar una cadena y devuelve una lista de cadenas recortadas por cualquier carácter
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
}
ya que no encontró una manera de hacer esto en swift (compila y funciona perfectamente en swift 2.0)
¿Puedes definir qué quieres decir con 'recortar', con un ejemplo? Como su tipo de retorno es [Cadena], no puede implementar lo que solicitó el OP. (que devuelve una cadena)
Respuestas:
A continuación se explica cómo eliminar todo el espacio en blanco desde el principio y el final de a
String
.(Ejemplo probado con Swift 2.0 .)
(Ejemplo probado con Swift 3+ .)
Espero que esto ayude.
fuente
Pon este código en un archivo en tu proyecto, algo como Utils.swift:
Entonces podrás hacer esto:
Solución Swift 3.0
Entonces podrás hacer esto:
fuente
String
?return self.trimmingCharacters(in: .whitespacesAndNewlines)
En Swift 3.0
Y puedes llamar
fuente
Swift 5 y 4.2
fuente
Swift 3
fuente
Sí, puede hacerlo así:
CharacterSet es en realidad una herramienta realmente poderosa para crear una regla de recorte con mucha más flexibilidad que un conjunto predefinido como .whitespacesAndNewlines.
Por ejemplo:
fuente
Truncar cadena a longitud específica
Si ha ingresado un bloque de oración / texto y desea guardar solo la longitud especificada fuera del texto. Agregue la siguiente extensión a la clase
Utilizar
fuente
Puedes usar el método trim () en una extensión de Swift String que escribí https://bit.ly/JString .
fuente
Otra forma similar:
Utilizar:
fuente
Tomado de este repositorio mío: https://github.com/goktugyil/EZSwiftExtensions/commit/609fce34a41f98733f97dfd7b4c23b5d16416206
fuente
En Swift3 XCode 8 Final
¡Observe que
CharacterSet.whitespaces
ya no es una función!(Ninguno lo es
NSCharacterSet.whitespaces
)fuente
// Swift 4.0 Eliminar espacios y nuevas líneas
fuente
También puede enviar los caracteres que desea que se recorte
fuente
Creé esta función que permite ingresar una cadena y devuelve una lista de cadenas recortadas por cualquier carácter
ya que no encontró una manera de hacer esto en swift (compila y funciona perfectamente en swift 2.0)
fuente
No te olvides de
import Foundation
oUIKit
.Resultado:
De lo contrario, obtendrá:
fuente