Objective-C Language Longueur de chaine


Exemple

NSString a une propriété length pour obtenir le nombre de caractères.

NSString *string = @"example";
NSUInteger length = string.length;       // length equals 7

Comme dans l' exemple de fractionnement , gardez à l'esprit que NSString utilise UTF-16 pour représenter les caractères. La longueur est en fait juste le nombre d'unités de code UTF-16. Cela peut différer de ce que l'utilisateur perçoit comme des personnages.

Voici quelques cas qui pourraient être surprenants:

@"é".length == 1   // LATIN SMALL LETTER E WITH ACUTE (U+00E9)
@"é".length == 2   // LATIN SMALL LETTER E (U+0065) + COMBINING ACUTE ACCENT (U+0301)
@"❤️".length == 2  // HEAVY BLACK HEART (U+2764) + VARIATION SELECTOR-16 (U+FE0F)
@"🇮🇹".length == 4  // REGIONAL INDICATOR SYMBOL LETTER I (U+1F1EE) + REGIONAL INDICATOR SYMBOL LETTER T (U+1F1F9)

Pour obtenir le nombre de caractères perçus par l'utilisateur, appelés techniquement " grappes de graphèmes ", vous devez parcourir la chaîne avec -enumerateSubstringsInRange:options:usingBlock: et conserver un compte. Ceci est démontré dans une réponse de Nikolai Ruhe sur Stack Overflow .