Las API se han vuelto un poco más rápidas y, como resultado, la extensión de Foundation ha cambiado un poco:
var name:String="Dolphin"var truncated = name.substring(to: name.index(before: name.endIndex))
print(name)// "Dolphin"
print(truncated)//"Dolphi"
O la versión en el lugar:
var name:String="Dolphin"
name.remove(at: name.index(before: name.endIndex))
print(name)//"Dolphi"
Gracias Zmey, Rob Allen!
Swift 2.0+ Way
Hay algunas formas de lograr esto:
A través de la extensión Foundation, a pesar de no ser parte de la biblioteca Swift:
var name:String="Dolphin"var truncated = name.substringToIndex(name.endIndex.predecessor())
print(name)// "Dolphin"
print(truncated)//"Dolphi"
Usando el removeRange()método (que altera el name):
var name:String="Dolphin"
name.removeAtIndex(name.endIndex.predecessor())
print(name)//"Dolphi"
Usando la dropLast()función:
var name:String="Dolphin"var truncated =String(name.characters.dropLast())
print(name)// "Dolphin"
print(truncated)//"Dolphi"
Old String.Index (Xcode 6 Beta 4 +) Manera
Dado que los Stringtipos en Swift tienen como objetivo proporcionar una excelente compatibilidad con UTF-8, ya no puede acceder a índices / rangos / subcadenas de caracteres mediante Inttipos. En cambio, usas 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"
Alternativamente (para un ejemplo más práctico, pero menos educativo) puede usar endIndex:
let name:String="Dolphin"
name.substringToIndex(name.endIndex.predecessor())//"Dolphi"
Nota: He encontrado esto para ser un gran punto de partida para la comprensiónString.Index
Manera antigua (pre-Beta 4)
Simplemente puede usar la substringToIndex()función, proporcionándola una menos que la longitud de String:
let name:String="Dolphin"
name.substringToIndex(countElements(name)-1)//"Dolphi"
En Xcode 6 beta 6: 'String' no tiene un miembro llamadosubstringToIndex
ielyamani
2
Oye, avisa, asegúrate de que substringToIndexno sea así substringFromIndex. No te hace sentir inteligente confundir esto, déjame decirte.
Louie Bertoncin 01 de
2
Esto es cierto, a partir del 21 de julio, Xcode 7 Beta 4 dice que 'String' no tiene un miembro llamado substringToIndex. Además, a partir de Xcode 7, la cadena ya no tiene una .countpropiedad, ahora solo se aplica a los caracteres:string.characters.count
kakubei
2
Swift 3:var truncated = name.substring(to: name.index(before: name.endIndex))
Zmey
2
Su respuesta es la historia de la evolución rápida.
DawnSong
89
La dropLast()función global funciona en secuencias y, por lo tanto, en cadenas:
var expression ="45+22"
expression = dropLast(expression)// "45+2"
// in Swift 2.0 (according to cromanelli's comment below)
expression =String(expression.characters.dropLast())
En Swift 2.0, la characterspropiedad en una Cadena genera una secuencia, por lo tanto, ahora debe usar: expression = expression.characters.dropLast()
gui_dos
55
En Swift 2.0 para tener que emitir correctamente el resultado expression = String(expression.characters.dropLast())si lo quieres de nuevo como una Cadena
cromanelli
69
Swift 4:
let choppedString =String(theString.dropLast())
En Swift 2, haz esto:
let choppedString =String(theString.characters.dropLast())
Recomiendo este enlace para comprender las cadenas Swift.
var str_1="Maxim"
println("output: \(str_1.removeCharsFromEnd(1))")// "Maxi"
println("output: \(str_1.removeCharsFromEnd(3))")// "Ma"
println("output: \(str_1.removeCharsFromEnd(8))")//""
Referencia:
Las extensiones agregan nueva funcionalidad a una clase, estructura o tipo de enumeración existente. Esto incluye la capacidad de extender tipos para los cuales no tiene acceso al código fuente original (conocido como modelado retroactivo). Las extensiones son similares a las categorías en Objective-C. (A diferencia de las categorías de Objective-C, las extensiones Swift no tienen nombres).
Respuesta corta (válida a partir del 16/04/2015): removeAtIndex(myString.endIndex.predecessor())
Ejemplo:
var howToBeHappy ="Practice compassion, attention and gratitude. And smile!!"
howToBeHappy.removeAtIndex(howToBeHappy.endIndex.predecessor())
println(howToBeHappy)//"Practice compassion, attention and gratitude. And smile!"
Meta:
El lenguaje continúa su rápida evolución, haciendo que la vida media de muchas respuestas SO anteriormente buenas sea peligrosamente breve. Siempre es mejor aprender el idioma y consultar documentación real .
Recomiendo usar NSString para las cadenas que desea manipular. En realidad, pienso en ello como un desarrollador. Nunca he tenido un problema con NSString que Swift String resolvería ... Entiendo las sutilezas. Pero todavía tengo una necesidad real de ellos.
var foo = someSwiftString asNSString
o
var foo ="Foo"asNSString
o
var foo:NSString="blah"
Y luego, todo el mundo de operaciones simples de cadenas NSString está abierto para usted.
Como respuesta a la pregunta
// check bounds before you do this, e.g. foo.length > 0
// Note shortFoo is of type NSString
var shortFoo = foo.substringToIndex(foo.length-1)
También elimino mi último personaje de String (es decir, texto UILabel ) en la aplicación 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
}
Como complemento al código anterior, quería eliminar el comienzo de la cadena y no pude encontrar una referencia en ningún lado. Así es como lo hice:
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
Esto recorta 17 caracteres desde el comienzo de la cadena (la longitud total de la cadena es 67, avanzamos -50 desde el final y ahí lo tiene.
Respuestas:
Swift 4.0 (también Swift 5.0)
Swift 3.0
Las API se han vuelto un poco más rápidas y, como resultado, la extensión de Foundation ha cambiado un poco:
O la versión en el lugar:
Gracias Zmey, Rob Allen!
Swift 2.0+ Way
Hay algunas formas de lograr esto:
A través de la extensión Foundation, a pesar de no ser parte de la biblioteca Swift:
Usando el
removeRange()
método (que altera elname
):Usando la
dropLast()
función:Old String.Index (Xcode 6 Beta 4 +) Manera
Dado que los
String
tipos en Swift tienen como objetivo proporcionar una excelente compatibilidad con UTF-8, ya no puede acceder a índices / rangos / subcadenas de caracteres medianteInt
tipos. En cambio, usasString.Index
:Alternativamente (para un ejemplo más práctico, pero menos educativo) puede usar
endIndex
:Nota: He encontrado esto para ser un gran punto de partida para la comprensión
String.Index
Manera antigua (pre-Beta 4)
Simplemente puede usar la
substringToIndex()
función, proporcionándola una menos que la longitud deString
:fuente
substringToIndex
substringToIndex
no sea asísubstringFromIndex
. No te hace sentir inteligente confundir esto, déjame decirte.substringToIndex
. Además, a partir de Xcode 7, la cadena ya no tiene una.count
propiedad, ahora solo se aplica a los caracteres:string.characters.count
var truncated = name.substring(to: name.index(before: name.endIndex))
La
dropLast()
función global funciona en secuencias y, por lo tanto, en cadenas:fuente
characters
propiedad en una Cadena genera una secuencia, por lo tanto, ahora debe usar:expression = expression.characters.dropLast()
expression = String(expression.characters.dropLast())
si lo quieres de nuevo como una CadenaSwift 4:
En Swift 2, haz esto:
Recomiendo este enlace para comprender las cadenas Swift.
fuente
Swift 4/5
fuente
Este es un formulario de extensión de cadena :
Para versiones de Swift anteriores a 1.2:
Uso:
Referencia:
Ver DOCUMENTOS
fuente
Usa la función
removeAtIndex(i: String.Index) -> Character
:fuente
La forma más fácil de recortar el último carácter de la cadena es:
fuente
Swift 4
o
o
fuente
fuente
fuente
Una categoría rápida que está mutando:
Utilizar:
fuente
Respuesta corta (válida a partir del 16/04/2015):
removeAtIndex(myString.endIndex.predecessor())
Ejemplo:
Meta:
El lenguaje continúa su rápida evolución, haciendo que la vida media de muchas respuestas SO anteriormente buenas sea peligrosamente breve. Siempre es mejor aprender el idioma y consultar documentación real .
fuente
Con el nuevo uso del tipo de subcadena:
Swift 4:
Camino más corto:
fuente
Usa la función
advance(startIndex, endIndex)
:fuente
Otra forma Si desea eliminar uno o más de un personaje del final.
Donde XX es el número de caracteres que desea eliminar.
fuente
Swift 3 (según los documentos ) 20 de noviembre de 2016
fuente
Recomiendo usar NSString para las cadenas que desea manipular. En realidad, pienso en ello como un desarrollador. Nunca he tenido un problema con NSString que Swift String resolvería ... Entiendo las sutilezas. Pero todavía tengo una necesidad real de ellos.
o
o
Y luego, todo el mundo de operaciones simples de cadenas NSString está abierto para usted.
Como respuesta a la pregunta
fuente
La
dropLast()
función elimina el último elemento de la cadena.fuente
Swift 3 : cuando desee eliminar la cadena final:
fuente
Swift 4.2
También elimino mi último personaje de String (es decir, texto UILabel ) en la aplicación IOS
fuente
fuente
Como complemento al código anterior, quería eliminar el comienzo de la cadena y no pude encontrar una referencia en ningún lado. Así es como lo hice:
Esto recorta 17 caracteres desde el comienzo de la cadena (la longitud total de la cadena es 67, avanzamos -50 desde el final y ahí lo tiene.
fuente