Dart符文(Runes)


字串是一系列字元。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 = 'Tw511.com'; 
   print(x.codeUnits); 
}

執行上面範例程式碼,得到以下結果 -

[89, 105, 105, 98, 97, 105, 46, 99, 111, 109]

String.runes屬性

此屬性返回此字串的可疊代Unicode程式碼點,Runes可疊代擴充套件。

語法

String.runes

範例

void main(){ 
   "Maxsu".runes.forEach((int rune) { 
      var character=new String.fromCharCode(rune); 
      print(character); 
   });  
}

執行上面範例程式碼,得到以下結果 -

M
a
x
s
u

Unicode程式碼點通常表示為\uXXXX,其中XXXX4位十六進位制值。要指定多於或少於4個十六進位制數位,請將值放在大括號中。可以在dart:core庫中使用Runes類別建構函式。

範例

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