CoderMrWu

生活诚可期,爱情价更高!

Dart 符文

字符串是一系列字符。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,其中XXXX4位十六进制值。要指定多于或少于4个十六进制数字,请将值放在大括号中。可以在dart:core库中使用Runes类的构造函数。

示例:

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

}
// 打印结果: 😅
点赞