Pourquoi les emoji comme 👩👩👧👦 se comportent étrangement dans les chaînes Swift ?
Bonjour à tous ! Je développe une application iOS qui traite des textes avec des emoji. Et j'ai rencontré un comportement étrange de Swift avec les emoji composites, en particulier ceux représentant des familles et des drapeaux.
Par exemple, j'ai la chaîne `let family = "👩👩👧👦"`. Je m'attends à ce que `family.count` retourne 1 (car c'est un seul emoji !), mais au lieu de cela, j'obtiens 7. Et si j'essaie d'obtenir le premier caractère avec `family.first`, il ne retourne pas l'emoji entier, mais un caractère étrange.
Voici le code qui m'a troublé :
```swift
let family = "👩👩👧👦"
print(family.count) // 7
print(family.utf8.count) // 25
print(family.utf16.count) // 11
print(family.unicodeScalars.count) // 7
print(family.first) // Optional("👩")
```
Je m'attendais à ce que count soit 1 et que first retourne l'emoji entier. Pourquoi Swift compte-t-il ces caractères différemment ? Comment travailler correctement avec de tels emoji en Swift ? Je suis particulièrement intéressé par la façon de tronquer en toute sécurité des chaînes contenant ces emoji composites, sans les briser en morceaux.
No answers yet.
Connectez-vous pour laisser une réponse