web-dev-qa-db-fra.com

Longueur de la chaîne Swift 1.2 et Swift 2.0

Dans la version précédente de Swift, j'avais le code suivant.

func myfunc(mystr: String) {
    if mystr.utf16Count >= 3 {

Avec la dernière version de Swift 1.2, je reçois maintenant l’erreur suivante.

'utf16Count' is unavailable: Take the count of a UTF-16 view instead, i.e. count(str.utf16)

Ok, alors je change mon code comme suit.

func myfunc(mystr: String) {
    if count(mystr.utf16) >= 3 {

Mais ça ne marche pas. Je reçois maintenant le message d'erreur suivant à la place.

'(String.UTF16View) -> _' is not identical to 'Int16'

Quelle est la bonne façon d'obtenir la longueur d'une chaîne avec Swift 1.2?

32
Molanda

Vous pouvez utiliser l'extension pour cela comme:

extension String {
     var length: Int { return count(self)         }  // Swift 1.2
}

et vous pouvez l'utiliser:

if mystr.length >= 3 {

}

Ou vous pouvez directement compter de cette façon:

if count(mystr) >= 3{

}

Et cela fonctionne aussi pour moi:

if count(mystr.utf16) >= 3 {

}

Pour Swift 2.0:

extension String {
    var length: Int {
        return characters.count
    }
}
let str = "Hello, World"
str.length  //12

Une autre extension:

extension String {
    var length: Int {
        return (self as NSString).length
    }
}
let str = "Hello, World"
str.length //12

Si vous voulez une utilisation directe:

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
87
Dharmesh

Vous devez utiliser la propriété characters qui contient le nombre de propriétés:

votreChaine.characters.count

23
pierre23

Swift 2.0 UPDATE

extension String {
    var count: Int { return self.characters.count }
}

Utilisation:

var str = "I love Swift 2.0!"
var n = str.count

Conseils et astuces de programmation utiles

7
quemeful

Voici tout en un - copié de ici

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
}
6
BLC

count(mystr) est la bonne façon, vous n'avez pas besoin de convertir l'encodage.

This: if count(mystr.utf16) >= 3 va bien tant que vous faites Int16(3)

Edit: c'est une vieille réponse. OP a mis à jour sa question pour refléter Swift 2 et la réponse ci-dessus est correcte.

2
Schemetrical