guarnição @mattdipasquale é um nome muito comum para esta operação
Austin
Respostas:
831
Veja como você remove todo o espaço em branco do início e do final de um String.
(Exemplo testado com 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"
(Exemplo testado com 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"
Não funcionará no swif 1.2, pois não há convenção automática de String para NSString.
Elcuco 18/06/2015
5
Ele funciona muito bem em Swift 1.2 - o objeto String tem método stringByTrimmingCharactersInSet (não é um exclusivo NSString)
Ben Dodson
8
Em Swift 3.0 é: deixar trimmedString = myString.trimmingCharacters (em: .whitespaces)
kikettas
6
Isso não significa que está desatualizado. Nem todo mundo está usando o Swift 3.0 ainda.
usar o seguinte código
2
No Swift 3.0, isso não remove espaços em branco entre as strings. Ele remove apenas os espaços em branco iniciais e finais. Para isso, consulte esta resposta: stackoverflow.com/a/39067610/4886069 #
130
Coloque esse código em um arquivo no seu projeto, algo como Utils.swift:
Isso é seguro? Como impedir uma colisão de nome de método se a Apple ou alguma biblioteca de terceiros adicionar o mesmo método String?
ma11hew28
12
As extensões são seguras - e, de fato, a Apple faz um uso prolífico delas em suas APIs internas. Você não pode impedir colisões de nomes, e isso é realmente bom. Você receberá um erro de compilação quando a Apple finalmente adicionar um método trim () e saberá que sua extensão não é mais necessária. As extensões são bastante elegantes e colocam métodos onde você precisa delas, em vez de alguma classe de utilidade obscura, como StringUtils - o problema que tenho é quando uma classe não possui um método de que preciso porque alguma outra estrutura não foi importada que adicionou extensões a ela.
absmiths
3
Ei, no Swift 3 deve retornarreturn self.trimmingCharacters(in: .whitespacesAndNewlines)
7
let result = "Hello World" .trim () // result = "HelloWorld" isso não removerá os espaços em branco contidos na string. removerá apenas espaços iniciais e finais.
Sahil
2
isso não removerá espaços entre as strings. Ele remove apenas o espaço inicial e final. Então é melhor maneira de remover espaços entre cordas é o uso yourtext .replacingOccurrences (de: "", com: "") em vez de usar trimmingCharacters?
E se eu quiser apenas aparar os espaços em branco à esquerda e à direita?
Suragch
11
Eu sou novo em 3 extensões rápidas. Se uma biblioteca modifica String, e eu também modifico String, é possível obter colisões? E se futuras versões do swift ad um método trim ()? Então .. basicamente .. as extensões são seguras para usar assim?
Gattster 14/10/16
11
é possível obter colisões.
Alex Brown
let result = "Hello World" .trim () // result = "HelloWorld" isso não removerá os espaços em branco contidos na string. vai Remve única esquerda e à direita espaços
Sahil
45
Swift 5 e 4.2
let trimmedString =" abc ".trimmingCharacters(in:.whitespaces)//trimmedString =="abc"
Na verdade, são "espaços em branco e linhas novas", haha, resta um.
RainCast 19/10/16
9
Sim, você pode fazer assim:
var str =" this is the answer "
str = str.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)
print(srt)//"this is the answer"
CharacterSet é realmente uma ferramenta realmente poderosa para criar uma regra de corte com muito mais flexibilidade do que um conjunto predefinido como .whitespacesAndNewlines.
Por exemplo:
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 characterspublicmutatingfunc trim(){self=self.trimmed()}/// EZSE: Trims white space and new line characters, returns a new stringpublicfunc trimmed()->String{returnself.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())}}
Eu criei esta função que permite inserir uma string e retorna uma lista de string aparada por qualquer caractere
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
}
como não encontrou uma maneira de fazer isso no swift (compila e funciona perfeitamente no swift 2.0)
você pode definir o que você quer dizer com 'aparar', com um exemplo. Como seu tipo de retorno é [String], você não pode implementar o que o OP solicitou. (que retorna um String)
Respostas:
Veja como você remove todo o espaço em branco do início e do final de um
String
.(Exemplo testado com Swift 2.0 .)
(Exemplo testado com Swift 3+ .)
Espero que isto ajude.
fonte
Coloque esse código em um arquivo no seu projeto, algo como Utils.swift:
Então você será capaz de fazer isso:
Solução Swift 3.0
Então você será capaz de fazer isso:
fonte
String
?return self.trimmingCharacters(in: .whitespacesAndNewlines)
No Swift 3.0
E você pode ligar
fonte
Swift 5 e 4.2
fonte
Swift 3
fonte
Sim, você pode fazer assim:
CharacterSet é realmente uma ferramenta realmente poderosa para criar uma regra de corte com muito mais flexibilidade do que um conjunto predefinido como .whitespacesAndNewlines.
Por exemplo:
fonte
Truncar seqüência de caracteres para comprimento específico
Se você inseriu o bloco de frase / texto e deseja salvar apenas o comprimento especificado desse texto. Adicione a seguinte extensão à classe
Usar
fonte
Você pode usar o método trim () em uma extensão Swift String que escrevi https://bit.ly/JString .
fonte
Outra maneira semelhante:
Usar:
fonte
Retirado deste repo meu: https://github.com/goktugyil/EZSwiftExtensions/commit/609fce34a41f98733f97dfd7b4c23b5d16416206
fonte
No Swift3 XCode 8 Final
Observe que a
CharacterSet.whitespaces
função não é mais!(Nem é
NSCharacterSet.whitespaces
)fonte
// Swift 4.0 Remover espaços e novas linhas
fonte
Você também pode enviar caracteres que deseja cortar
fonte
Eu criei esta função que permite inserir uma string e retorna uma lista de string aparada por qualquer caractere
como não encontrou uma maneira de fazer isso no swift (compila e funciona perfeitamente no swift 2.0)
fonte
Não esqueça de
import Foundation
ouUIKit
.Resultado:
Caso contrário, você receberá:
fonte