String
в одном из трёх других Unicode-совместимых отображений:
let dogString = "Пёс‼🐶"
Каждый пример демонстрирует разное отображение следующей строки, которая состоит из символов 'D', 'o', 'g', '!!' ("DOUBLE EXCLAMATION MARK", "U+203C") и , 🐶 ("DOG FACE", "U+1F436") или скаляра Юникода U+203C) , и 🐶 символа (DOG FACE , или скаляру Юникода U+1F436 ).
String
кодировки UTF-8 с помощью итерации через свойство utf8. Это свойство имеет тип String.UTF8View
, который является коллекцией беззнаковых восьмибитных значений (UInt8), по одному для каждого байта в строковом UTF-8 представлении:
for codeUnit in dogString.utf8 {
print("\(codeUnit) ", terminator: " ")
}
print("")
String
кодировки UTF-16 с помощью итерации через свойство utf16. Это свойство имеет тип String.UTF16View
, который является коллекцией беззнаковых 16-битных значений (UInt16), по одному для каждого 16-битного кода в строковом UTF-16 представлении:
for codeUnit in dogString.utf16 {
print("\(codeUnit) ", terminator: " ")
}
print("")
String
с помощью итерации через свойство unicodeSclars
. Это свойство имеет тип UnicodeScalarView
, который является коллекцией значений типа UnicodeScalar
.
UnicodeScalar
имеет свойство value
, которое возвращает 21-битное скальное значение, представляемое в качестве значения типа UInt32
:
for scalar in dogString.unicodeScalars {
print("\(scalar.value) ", terminator: " ")
}
print("")
В качестве альтернативы для запроса их свойств value
каждое значение типа UnicodeScalar
может быть использовано для создания нового значения типа String
, как и в строковой интерполяции:
for scalar in dogString.unicodeScalars {
print("\(scalar) ")
}