Dart 编码

字符串是一系列字符。Dart将字符串表示为Unicode UTF-16代码单元序列。Unicode是一种格式,用于为每个字母,数字和符号定义唯一的数值。

由于Dart字符串是一系列UTF-16代码单元,因此字符串中的32位Unicode值使用特殊语法表示。字符是表示Unicode代码点的整数。

dart:core 库中的String类提供了访问字符的机制。可以通过三种方式访问​​字符串代码单元/​​字符

  • 使用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 string.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个十六进制数字,请将值放在大括号中。可以在dart:core库中使用Runes类的构造函数。

例如

main() {
   Runes input = new Runes(' \u{1f605} ');
   print(new String.fromCharCodes(input));
}

它将产生以下输出:

符文

枚举用于定义命名常量值。使用 enum 关键字声明枚举类型。 语法enum enum_name { enumeration list}enum_name 指定枚举类型名称enumeration list 是一个 ...