Dart编程 - Rune



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

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

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

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

示例

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

它将产生以下输出

Runes
广告