Строки — это последовательность символов. Dart представляет строки в виде последовательности кодовых единиц Unicode UTF-16. Юникод — это формат, который определяет уникальное числовое значение для каждой буквы, цифры и символа.
Поскольку строка Dart представляет собой последовательность единиц кода UTF-16, 32-битные значения Unicode в строке представляются с использованием специального синтаксиса. Руна — это целое число, представляющее кодовую точку Unicode.
Класс String в библиотеке dart: core предоставляет механизмы для доступа к рунам . К единицам / рунам строкового кода можно получить доступ тремя способами:
- Использование функции String.codeUnitAt ()
- Использование свойства String.codeUnits
- Использование свойства String.runes
Функция String.codeUnitAt ()
К единицам кода в строке можно получить доступ через их индексы. Возвращает 16-битную кодовую единицу UTF-16 по заданному индексу.
Синтаксис
String.codeUnitAt(int index);
пример
import 'dart:core'; void main(){ f1(); } f1() { String x = 'Runes'; print(x.codeUnitAt(0)); }
Это даст следующий результат —
82
Свойство String.codeUnits
Это свойство возвращает неизменяемый список кодовых единиц UTF-16 указанной строки.
Синтаксис
String. codeUnits;
пример
import 'dart:core'; void main(){ f1(); } f1() { String x = 'Runes'; print(x.codeUnits); }
Это даст следующий результат —
[82, 117, 110, 101, 115]
String.runes Имущество
Это свойство возвращает повторяемость кодовых точек Unicode этой строки. Runes расширяет повторяемость.
Синтаксис
String.runes
пример
void main(){ "A string".runes.forEach((int rune) { var character=new String.fromCharCode(rune); print(character); }); }
Это даст следующий результат —
A s t r i n g
Кодовые точки Unicode обычно выражаются как \ uXXXX , где XXXX — это шестнадцатеричное 4-значное значение. Чтобы указать более или менее 4 шестнадцатеричных цифр, поместите значение в фигурные скобки. Для этого можно использовать конструктор класса Runes в библиотеке dart: core.
пример
main() { Runes input = new Runes(' \u{1f605} '); print(new String.fromCharCodes(input)); }
Это даст следующий результат —