字符串是一系列字符。Dart将字符串表示为Unicode UTF-16代码单元序列。Unicode是一种格式,用于为每个字母,数字和符号定义唯一的数值。
由于Dart字符串是UTF-16代码单元序列,因此字符串中的32位Unicode值使用特殊语法表示。符文是表示Unicode代码点的整数。
dart:core
库中的String类提供了访问符文的机制。可以通过三种方式访问字符串代码单元/符文:
(1) 使用String.codeUnitAt()
函数
(2) 使用String.codeUnits
属性
(3) 使用String.runes
属性
1、String.codeUnitAt()函数
可以通过索引访问字符串中的代码单元。返回给定索引处的16位UTF-16代码单元。
String.codeUnitAt(int index);
示例
String str = 'HelloWorld!'; var res = str.codeUnitAt(0); print(res); // 打印结果: 72
2、String.codeUnits属性
此属性返回指定字符串的UTF-16代码单元的不可修改列表。
语法:
String.codeUnits;
示例:
String str = 'HelloWorld!'; var res = str.codeUnits; print(res); // 打印结果: [72, 101, 108, 108, 111, 87, 111, 114, 108, 100, 33]
2、String.runes属性
语法:
String.runes;
示例:
String str = 'HelloWorld!'; str.runes.forEach((int rune){ var char = new String.fromCharCode(rune); print(char); }); // 打印结果: HelloWorld!
Unicode代码点通常表示为\uXXXX
,其中XXXX
是4
位十六进制值。要指定多于或少于4个十六进制数字,请将值放在大括号中。可以在dart:core
库中使用Runes类的构造函数。
示例:
Runes input = new Runes(' \u{1f605} '); print(new String.fromCharCodes(input)); } // 打印结果: 😅