Тип Runes
Тип Runes - последовательность юникодных кодов
символов строки. Каждый элемент имеет тип int.
Свойство length у String считает кодовые
единицы UTF-16, а не символы. Символ за пределами
базовой плоскости занимает две такие единицы
и один код в Runes. Получить последовательность
можно свойством runes строки.
Тип Runes является подтипом Iterable<int>.
Синтаксис
Runes name = 'abcde'.runes;
Пример
Давайте получим коды символов строки 'abcde'.
Код буквы a равен 97:
void main()
{
Runes res = 'abcde'.runes;
print(res);
print(res.first);
}
Результат выполнения кода:
(97, 98, 99, 100, 101)
97
Пример
Давайте сравним длину строки и число кодов
для одного символа вне базовой плоскости.
Запись \u{1F600} - это один эмодзи:
void main()
{
String text = '\u{1F600}';
print(text.length);
print(text.runes.length);
print(text.runes.first);
}
Результат выполнения кода:
2
1
128512
Пример
Давайте переберём коды короткой строки
циклом for-in:
void main()
{
Runes res = 'abc'.runes;
for (int code in res)
{
print(code);
}
}
Результат выполнения кода:
97
98
99