Swift Language Codificación y descomposición de cadenas


Ejemplo

Una cadena Swift está hecha de puntos de código Unicode . Se puede descomponer y codificar de diferentes maneras.

let str = "ที่👌①!"

Cuerdas en descomposición

Los characters una cadena son agrupamientos de grafemas extendidos Unicode:

Array(str.characters)  // ["ที่", "👌", "①", "!"]

Los unicodeScalars son los puntos de código Unicode que forman una cadena (observe que ที่ es un grupo de grafemas, pero 3 puntos de código - 3607, 3637, 3656 - por lo que la longitud de la matriz resultante no es la misma que con los characters ):

str.unicodeScalars.map{ $0.value }  // [3607, 3637, 3656, 128076, 9312, 33]

Puede codificar y descomponer cadenas como UTF-8 (una secuencia de UInt8 s) o UTF-16 (una secuencia de UInt16 s):

Array(str.utf8)   // [224, 184, 151, 224, 184, 181, 224, 185, 136, 240, 159, 145, 140, 226, 145, 160, 33]
Array(str.utf16)  // [3607, 3637, 3656, 55357, 56396, 9312, 33]

Longitud de la cuerda y la iteración

Los characters una cadena, unicodeScalars , utf8 y utf16 son todos Collection s, por lo que puede obtener su count e iterar sobre ellos:

// NOTE: These operations are NOT necessarily fast/cheap! 

str.characters.count     // 4
str.unicodeScalars.count // 6
str.utf8.count           // 17
str.utf16.count          // 7
for c in str.characters { // ...
for u in str.unicodeScalars { // ...
for byte in str.utf8 { // ...
for byte in str.utf16 { // ...