Dartルーン(Runes)

文字列は一連の文字です。Dartは、文字列をUnicode UTF-16コードユニットのシーケンスとして表します。Unicodeは、文字、数字、記号ごとに一意の値を定義するために使用される形式です。

Dart文字列はUTF-16コードユニットのシーケンスであるため、文字列内の32ビットUnicode値は特別な構文で表されます。ルーンは、Unicodeコードポイントを表す整数です。

dart:coreライブラリのStringクラスは、ルーンにアクセスするためのメカニズムを提供します。文字列コードユニット/ルーンにアクセスするには3つのやり方があります。

  • 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 = 'Yiibai.com'; 
   print(x.codeUnits); 
}

上記のコードを実行した後、出力結果は以下のとおりです。

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

String.runes属性

この属性は、この文字列の反復可能なUnicodeコードポイントを返します。Runesは繰り返し展開できます。

構文

String.runes

実例

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

上記のコードを実行した後、出力結果は以下のとおりです。

C
e
o
d
a
t
a

Unicodeコードポイントは通常、\uXXXXとして表されます。その中のXXXX4桁の16進値です。4桁以上または4桁未満を指定するには、値を中括弧で囲みます。dart:coreライブラリのRunesクラスのコンストラクタを使用できます。

実例

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です