ios - Longitud de cadena en Swift 1.2 y Swift 2.0
string xcode7 (5)
Esta pregunta ya tiene una respuesta aquí:
- Obtener la longitud de una cadena 41 respuestas
En la versión anterior de Swift, tenía el siguiente código.
func myfunc(mystr: String) {
if mystr.utf16Count >= 3 {
Con la última versión de Swift 1.2, ahora aparece el siguiente error.
''utf16Count'' is unavailable: Take the count of a UTF-16 view instead, i.e. count(str.utf16)
Ok, entonces cambio mi código de la siguiente manera.
func myfunc(mystr: String) {
if count(mystr.utf16) >= 3 {
Pero eso no funciona. Ahora recibo el siguiente mensaje de error en su lugar.
''(String.UTF16View) -> _'' is not identical to ''Int16''
¿Cuál es la forma correcta de obtener la longitud de una cadena con Swift 1.2?
Aquí está todo en uno, copiado desde here
let str = "Hello"
let count = str.length // returns 5 (Int)
extension String {
var length: Int { return countElements(self) } // Swift 1.1
}
extension String {
var length: Int { return count(self) } // Swift 1.2
}
extension String {
var length: Int { return characters.count } // Swift 2.0
}
Debe usar la propiedad de caracteres que contiene el recuento de propiedades:
yourString.characters.count
Puede usar la extensión como:
extension String {
var length: Int { return count(self) } // Swift 1.2
}
y puedes usarlo:
if mystr.length >= 3 {
}
O puede contar directamente de esta manera:
if count(mystr) >= 3{
}
Y esto también está funcionando para mí:
if count(mystr.utf16) >= 3 {
}
Para Swift 2.0:
extension String {
var length: Int {
return characters.count
}
}
let str = "Hello, World"
str.length //12
Otra extensión:
extension String {
var length: Int {
return (self as NSString).length
}
}
let str = "Hello, World"
str.length //12
Si quieres uso directo:
let str: String = "Hello, World"
print(str.characters.count) // 12
let str1: String = "Hello, World"
print(str1.endIndex) // 12
let str2 = "Hello, World"
NSString(string: str2).length //12
count(mystr)
es la forma correcta, no necesita convertir la codificación.
Esto:
if count(mystr.utf16) >= 3
está bien siempre que lo haga
Int16(3)
Editar: esta es una vieja respuesta. OP actualizó su pregunta para reflejar Swift 2 y la respuesta anterior es correcta.
ACTUALIZACIÓN Swift 2.0
extension String {
var count: Int { return self.characters.count }
}
Utilizar:
var str = "I love Swift 2.0!"
var n = str.count