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?
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
Vous devez utiliser la propriété characters qui contient le nombre de propriétés:
votreChaine.characters.count
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
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
}
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.