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