As APIs ficaram um pouco mais rápidas e, como resultado, a extensão do Foundation mudou um pouco:
var name:String="Dolphin"var truncated = name.substring(to: name.index(before: name.endIndex))
print(name)// "Dolphin"
print(truncated)//"Dolphi"
Ou a versão local:
var name:String="Dolphin"
name.remove(at: name.index(before: name.endIndex))
print(name)//"Dolphi"
Obrigado Zmey, Rob Allen!
Caminho Swift 2.0+
Existem algumas maneiras de fazer isso:
Através da extensão da Fundação, apesar de não fazer parte da biblioteca Swift:
var name:String="Dolphin"var truncated = name.substringToIndex(name.endIndex.predecessor())
print(name)// "Dolphin"
print(truncated)//"Dolphi"
Usando o removeRange()método (que altera o name):
var name:String="Dolphin"
name.removeAtIndex(name.endIndex.predecessor())
print(name)//"Dolphi"
Usando a dropLast()função:
var name:String="Dolphin"var truncated =String(name.characters.dropLast())
print(name)// "Dolphin"
print(truncated)//"Dolphi"
Caminho antigo do String.Index (Xcode 6 Beta 4 +)
Como os Stringtipos no Swift visam fornecer excelente suporte UTF-8, não é mais possível acessar índices / intervalos / substrings de caracteres usando Inttipos. Em vez disso, você usa String.Index:
let name:String="Dolphin"let stringLength = count(name)// Since swift1.2 `countElements` became `count`
let substringIndex = stringLength -1
name.substringToIndex(advance(name.startIndex, substringIndex))//"Dolphi"
Como alternativa (para um exemplo mais prático, mas menos educacional), você pode usar endIndex:
let name:String="Dolphin"
name.substringToIndex(name.endIndex.predecessor())//"Dolphi"
Nota: achei este um ótimo ponto de partida para entenderString.Index
Caminho antigo (pré-Beta 4)
Você pode simplesmente usar a substringToIndex()função, fornecendo uma a menos que o comprimento de String:
let name:String="Dolphin"
name.substringToIndex(countElements(name)-1)//"Dolphi"
No Xcode 6 beta 6: 'String' não tem um membro chamadosubstringToIndex
ielyamani
2
Hey, heads up, certifique-se que substringToIndexnão substringFromIndex. Não faz você se sentir inteligente confundindo isso, deixe-me dizer.
Louie Bertoncin
2
Isso é verdade, a partir de 21 de julho, o Xcode 7 Beta 4 diz que 'String' não tem um membro chamado substringToIndex. Além disso, a partir de Xcode 7, corda já não tem uma .countpropriedade, é agora aplicada somente aos caracteres:string.characters.count
kakubei
2
Swift 3:var truncated = name.substring(to: name.index(before: name.endIndex))
Zmey 15/07/16
2
Sua resposta é a história da evolução Swift.
DawnSong
89
A dropLast()função global funciona em seqüências e, portanto, em Strings:
var expression ="45+22"
expression = dropLast(expression)// "45+2"
// in Swift 2.0 (according to cromanelli's comment below)
expression =String(expression.characters.dropLast())
var str_1="Maxim"
println("output: \(str_1.removeCharsFromEnd(1))")// "Maxi"
println("output: \(str_1.removeCharsFromEnd(3))")// "Ma"
println("output: \(str_1.removeCharsFromEnd(8))")//""
Referência:
As extensões adicionam nova funcionalidade a uma classe, estrutura ou tipo de enumeração existente. Isso inclui a capacidade de estender tipos para os quais você não tem acesso ao código fonte original (conhecido como modelagem retroativa). As extensões são semelhantes às categorias no Objective-C. (Diferentemente das categorias Objective-C, as extensões Swift não têm nomes.)
Resposta curta (válida a partir de 16/04/2015): removeAtIndex(myString.endIndex.predecessor())
Exemplo:
var howToBeHappy ="Practice compassion, attention and gratitude. And smile!!"
howToBeHappy.removeAtIndex(howToBeHappy.endIndex.predecessor())
println(howToBeHappy)//"Practice compassion, attention and gratitude. And smile!"
Meta:
A linguagem continua sua rápida evolução, tornando a meia-vida de muitas respostas SO boas anteriormente perigosamente breves. É sempre melhor aprender o idioma e consultar a documentação real .
Eu recomendo usar o NSString para seqüências de caracteres que você deseja manipular. Na verdade, pense nisso como um desenvolvedor. Eu nunca tive um problema com o NSString que o Swift String resolveria ... eu entendo as sutilezas. Mas ainda tenho uma necessidade real deles.
var foo = someSwiftString asNSString
ou
var foo ="Foo"asNSString
ou
var foo:NSString="blah"
E então todo o mundo das operações simples de string do NSString está aberto para você.
Como resposta à pergunta
// check bounds before you do this, e.g. foo.length > 0
// Note shortFoo is of type NSString
var shortFoo = foo.substringToIndex(foo.length-1)
Também excluo meu último caractere de String (ou seja, texto UILabel ) no aplicativo IOS
@IBOutletweakvar labelText:UILabel!// Do Connection with UILabel
@IBActionfunc whenXButtonPress(_ sender:UIButton){// Do Connection With X Button
labelText.text =String((labelText.text?.dropLast())!)// Delete the last caracter and assign it
}
complementar ao código acima, eu queria remover o início da string e não consegui encontrar uma referência em nenhum lugar. Aqui está como eu fiz isso:
var mac = peripheral.identifier.description
let range = mac.startIndex..<mac.endIndex.advancedBy(-50)
mac.removeRange(range)// trim 17 characters from the beginning
let txPower = peripheral.advertisements.txPower?.description
Isso apara 17 caracteres desde o início da string (o comprimento total da string é 67, avançamos -50 a partir do final e aí está.
Respostas:
Swift 4.0 (também Swift 5.0)
Swift 3.0
As APIs ficaram um pouco mais rápidas e, como resultado, a extensão do Foundation mudou um pouco:
Ou a versão local:
Obrigado Zmey, Rob Allen!
Caminho Swift 2.0+
Existem algumas maneiras de fazer isso:
Através da extensão da Fundação, apesar de não fazer parte da biblioteca Swift:
Usando o
removeRange()
método (que altera oname
):Usando a
dropLast()
função:Caminho antigo do String.Index (Xcode 6 Beta 4 +)
Como os
String
tipos no Swift visam fornecer excelente suporte UTF-8, não é mais possível acessar índices / intervalos / substrings de caracteres usandoInt
tipos. Em vez disso, você usaString.Index
:Como alternativa (para um exemplo mais prático, mas menos educacional), você pode usar
endIndex
:Nota: achei este um ótimo ponto de partida para entender
String.Index
Caminho antigo (pré-Beta 4)
Você pode simplesmente usar a
substringToIndex()
função, fornecendo uma a menos que o comprimento deString
:fonte
substringToIndex
substringToIndex
nãosubstringFromIndex
. Não faz você se sentir inteligente confundindo isso, deixe-me dizer.substringToIndex
. Além disso, a partir de Xcode 7, corda já não tem uma.count
propriedade, é agora aplicada somente aos caracteres:string.characters.count
var truncated = name.substring(to: name.index(before: name.endIndex))
A
dropLast()
função global funciona em seqüências e, portanto, em Strings:fonte
characters
propriedade em uma String gera uma sequência, portanto agora você deve usar:expression = expression.characters.dropLast()
expression = String(expression.characters.dropLast())
se você quer de volta como uma StringSwift 4:
No Swift 2, faça o seguinte:
Eu recomendo este link para entender as seqüências de caracteres Swift.
fonte
Swift 4/5
fonte
Este é um formulário de extensão de string :
para versões do Swift anteriores à 1.2:
Uso:
Referência:
Veja DOCS
fonte
Use a função
removeAtIndex(i: String.Index) -> Character
:fonte
A maneira mais fácil de aparar o último caractere da string é:
fonte
Swift 4
ou
ou
fonte
fonte
fonte
Uma categoria rápida que está mudando:
Usar:
fonte
Resposta curta (válida a partir de 16/04/2015):
removeAtIndex(myString.endIndex.predecessor())
Exemplo:
Meta:
A linguagem continua sua rápida evolução, tornando a meia-vida de muitas respostas SO boas anteriormente perigosamente breves. É sempre melhor aprender o idioma e consultar a documentação real .
fonte
Com o novo uso do tipo Substring:
Swift 4:
Maneira mais curta:
fonte
Use a função
advance(startIndex, endIndex)
:fonte
Outra maneira Se você deseja remover um ou mais de um caractere do final.
Onde XX é o número de caracteres que você deseja remover.
fonte
Swift 3 (de acordo com os documentos ) 20 de novembro de 2016
fonte
Eu recomendo usar o NSString para seqüências de caracteres que você deseja manipular. Na verdade, pense nisso como um desenvolvedor. Eu nunca tive um problema com o NSString que o Swift String resolveria ... eu entendo as sutilezas. Mas ainda tenho uma necessidade real deles.
ou
ou
E então todo o mundo das operações simples de string do NSString está aberto para você.
Como resposta à pergunta
fonte
A
dropLast()
função remove o último elemento da sequência.fonte
Swift 3 : quando você deseja remover a sequência final:
fonte
Swift 4.2
Também excluo meu último caractere de String (ou seja, texto UILabel ) no aplicativo IOS
fonte
fonte
complementar ao código acima, eu queria remover o início da string e não consegui encontrar uma referência em nenhum lugar. Aqui está como eu fiz isso:
Isso apara 17 caracteres desde o início da string (o comprimento total da string é 67, avançamos -50 a partir do final e aí está.
fonte