count, utf8.count, utf16.count возвращает разные результаты - PullRequest
0 голосов
/ 15 декабря 2018

Интересно, почему я получаю разные результаты в каждой из следующих строк

let spain = "España"
print (spain.count) -- return 6
print (spain.utf8.count) -- return 7
print (spain.utf16.count) -- return 6
print (spain.utf8CString.count) -- return 8

1 Ответ

0 голосов
/ 15 декабря 2018

count в String и String.UTF8View, String.UTF16View и т. Д. Различны, поскольку их способ хранения различен, хотя все они являются коллекциями.String сохраняет их в коллекции символов, поэтому каждый элемент в коллекции представляет один символ.Однако в других кодировках они хранятся в коллекции единиц кода этой кодировки.Некоторые специальные символы (например, ñ) должны храниться в двух единицах.Например, в UTF8 это 0xC3 0xB1, а в UTF16 - 0x00F1, поэтому вы можете видеть, что в кодировке UTF8 есть еще один элемент, чем UTF16.Вы не можете точно определить количество символов с помощью count, если не используете основание String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...