文字列は一連の文字です。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
として表されます。その中のXXXX
は4
桁の16進値です。4桁以上または4桁未満を指定するには、値を中括弧で囲みます。dart:core
ライブラリのRunesクラスのコンストラクタを使用できます。
実例
main() {
Runes input = new Runes(' \u{1f605} ');
print(new String.fromCharCodes(input));
}
コメントを残す