¿Cómo debo eliminar todos los espacios iniciales de una cadena? - rápido
170
Necesito una forma de eliminar el primer carácter de una cadena que es un espacio. Estoy buscando un método o incluso una extensión para el tipo de cadena que pueda usar para cortar un carácter de una cadena.
Esta respuesta se publicó cuando la pregunta era sobre la eliminación de todos los espacios en blanco, la pregunta se editó para mencionar solo los espacios en blanco principales. Si solo desea eliminar los espacios en blanco iniciales, use lo siguiente:
extensionString{func removingLeadingSpaces()->String{guardlet index = firstIndex(where:{!CharacterSet(charactersIn:String($0)).isSubset(of:.whitespaces)})else{returnself}returnString(self[index...])}}
también .componentes (separados por: .whitespacesAndNewlines) para nuevas líneas también
Derek
Esto debería ser una función, no una var
Jakub Truhlář
1
Debido a la lógica de la función . Está haciendo una propiedad calculada cuando debería hacer una función . Está haciendo smt en lugar de mantener un valor o calcularlo a partir de otro. Mire: stackoverflow.com/questions/24035276/…
@ JakubTruhlář Usted dice "Esto debería ser una función, no una var" . Esto suena como si estuviera diciendo un hecho, no su opinión. Si lees las respuestas a la pregunta vinculada, verás que si bien "tiene sentido" para ti, para otras personas ... no necesariamente.
Ashley Mills
82
Esta extensión de cadena elimina todo el espacio en blanco de una cadena, no solo el espacio en blanco final ...
Para Swift 3.0+, vea las otras respuestas. Esta es ahora una respuesta heredada para Swift 2.x
Como se respondió anteriormente, dado que está interesado en eliminar el primer carácter, el método de instancia .stringByTrimmingCharactersInSet () funcionará bien:
También hay un método de instancia incorporado para tratar de eliminar o reemplazar subcadenas llamado stringByReplacingOccurrencesOfString (target: String, replace: String) . Puede eliminar espacios o cualquier otro patrón que ocurra en cualquier parte de su cadena
Puede especificar opciones y rangos, pero no necesita:
Esta es una manera fácil de eliminar o reemplazar cualquier patrón repetitivo de caracteres en su cadena, y se puede encadenar, aunque cada vez que lo haga tiene que pasar de nuevo por toda su cadena, disminuyendo la eficiencia. Entonces puedes hacer esto:
Encadenar estos métodos de instancia de String a veces puede ser muy conveniente para conversiones únicas, por ejemplo, si desea convertir un blob NSData corto en una cadena hexadecimal sin espacios en una línea, puede hacerlo con la interpolación de String incorporada de Swift y algunos recortes y reemplazando:
Usaría esta extensión, para ser flexible e imitar cómo lo hacen otras colecciones:
extensionString{func filter(pred:Character->Bool)->String{var res =String()for c inself.characters {if pred(c){
res.append(c)}}return res
}}"this is a String".filter { $0!=Character(" ")}//"thisisaString"
//This function trim only white space:
func trim()->String{returnself.trimmingCharacters(in:CharacterSet.whitespaces)}//This function trim whitespeaces and new line that you enter:
func trimWhiteSpaceAndNewLine()->String{returnself.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)}
Otra respuesta más, a veces la cadena de entrada puede contener más de un espacio entre palabras. Si necesita estandarizar para tener solo 1 espacio entre palabras, intente esto (Swift 4/5)
let inputString =" a very strange text ! "let validInput = inputString.components(separatedBy:.whitespacesAndNewlines).filter { $0.count >0}.joined(separator:" ")
print(validInput)//"a very strange text !"
Solo funciona para "" (no considera otros tipos de whitesapce)
fpg1503
Porque tu respuesta es incorrecta. La respuesta a la que has proporcionado una actualización también es incorrecta. Hay varios tipos de espacios en blanco y es por eso que usar whitespaceCharacterSetes una mejor práctica.
Respuestas:
Para eliminar espacios en blanco iniciales y finales:
Swift 3 / Swift 4:
fuente
NSCharacterSet.whitespaceAndNewlineCharacterSet()
si desea recortar caracteres de nueva línea también.La forma correcta cuando desea eliminar todo tipo de espacios en blanco (en base a esta respuesta SO ) es:
Swift 3.0+ (3.0, 3.1, 3.2, 4.0)
EDITAR
Esta respuesta se publicó cuando la pregunta era sobre la eliminación de todos los espacios en blanco, la pregunta se editó para mencionar solo los espacios en blanco principales. Si solo desea eliminar los espacios en blanco iniciales, use lo siguiente:
fuente
Esta extensión de cadena elimina todo el espacio en blanco de una cadena, no solo el espacio en blanco final ...
Ejemplo:
fuente
Swift 3
Simplemente puede usar este método para eliminar todos los espacios normales en una cadena (no considera todos los tipos de espacios en blanco):
El resultado será:
fuente
También puedes usar regex.
fuente
Para Swift 3.0+, vea las otras respuestas. Esta es ahora una respuesta heredada para Swift 2.x
Como se respondió anteriormente, dado que está interesado en eliminar el primer carácter, el método de instancia .stringByTrimmingCharactersInSet () funcionará bien:
También puede crear sus propios conjuntos de caracteres para recortar los límites de sus cadenas, por ejemplo:
También hay un método de instancia incorporado para tratar de eliminar o reemplazar subcadenas llamado stringByReplacingOccurrencesOfString (target: String, replace: String) . Puede eliminar espacios o cualquier otro patrón que ocurra en cualquier parte de su cadena
Puede especificar opciones y rangos, pero no necesita:
Esta es una manera fácil de eliminar o reemplazar cualquier patrón repetitivo de caracteres en su cadena, y se puede encadenar, aunque cada vez que lo haga tiene que pasar de nuevo por toda su cadena, disminuyendo la eficiencia. Entonces puedes hacer esto:
... pero tomará el doble de tiempo.
.stringByReplacingOccurrencesOfString () documentación del sitio de Apple
Encadenar estos métodos de instancia de String a veces puede ser muy conveniente para conversiones únicas, por ejemplo, si desea convertir un blob NSData corto en una cadena hexadecimal sin espacios en una línea, puede hacerlo con la interpolación de String incorporada de Swift y algunos recortes y reemplazando:
fuente
Para swift 3.0
fuente
Swift 4
El excelente caso para usar la expresión regular:
fuente
Usaría esta extensión, para ser flexible e imitar cómo lo hacen otras colecciones:
fuente
Si desea eliminar espacios del frente (y la parte posterior) pero no del medio, debe usar
stringByTrimmingCharactersInSet
Si desea eliminar espacios de cualquier parte de la cadena, puede que desee mirar stringByReplacing ...
fuente
" First Word "
salidas de ejemplo"First Word"
).Swift 4, 4.2 y 5
Elimine el espacio de la parte frontal y final solamente
Eliminar espacios de cada parte de la cadena
fuente
Puedes probar esto también
fuente
Pruebe la programación funcional para eliminar espacios en blanco:
fuente
fuente
Si alguien elimina el espacio extra de la cadena, por ejemplo =
"This is the demo text remove extra space between the words."
Puede usar esta función en Swift 4.
y el resultado será
fuente
Hola, esto puede ser tarde pero vale la pena intentarlo. Esto es de un archivo del patio de recreo. Puede convertirlo en una extensión de cadena.
Esto está escrito en Swift 5.3
Método 1:
Método 2:
fuente
Versión Swift 3
fuente
Recortar espacios en blanco en Swift 4
fuente
Otra respuesta más, a veces la cadena de entrada puede contener más de un espacio entre palabras. Si necesita estandarizar para tener solo 1 espacio entre palabras, intente esto (Swift 4/5)
fuente
Para mí, la siguiente línea solía eliminar espacios en blanco.
fuente
fuente
Versión Swift 3 de la respuesta de BadmintonCat
fuente
whitespaceCharacterSet
es una mejor práctica.fuente
Para eliminar todos los espacios de la cadena:
fuente