String.fromCharCodes constructor
String.fromCharCodes(
Iterable<int>charCodes, [int start = 0, int? end])
指定された charCodes を含む新しい文字列を割り当てます。
charCodes は、UTF-16コードユニットとルーン文字の両方にすることができます。char-code値が16ビットの場合、コード単位として使用されます。
なんのこっちゃ、という事でとりあえずコード書いてprint(出力)してみました。
print(String.fromCharCodes('A'.codeUnits));
// A;
'A'のみだと、int型にしなさいとエラーがでるのでUTF-16 コード単位であるcodeUnits,codeUnitAtメソッドを付与していきます。まずは、startとendの変数にラテン語AとZのコードユニットをいれてfor文でA~Zを出力してみます。
int start = 'A'.codeUnitAt(0);
int end = 'Z'.codeUnitAt(0);
print(String.fromCharCodes([for (var i = start; i <= end; i++) i]));
// ABCDEFGHIJKLMNOPQRSTUVWXYZ
次に、変数にラテン語Aのコードユニットを入れて、イテレータ(処理を抽象化)を使用し走査する Iterable.generateコンストラクタでZまで出力してみます。
int a = 'A'.codeUnitAt(0);
print(String.fromCharCodes(new Iterable.generate(26, (x) => a + x)));
// ABCDEFGHIJKLMNOPQRSTUVWXYZ
更に、AからZの文字コードの番号65を利用して同じように出力してみます。
List<int> list = new List<int>.generate(26, (int index) => index + 65);
String a = String.fromCharCodes(list);
print(a);
// ABCDEFGHIJKLMNOPQRSTUVWXYZ
A B Cと連結せずに一文字ずつfor文で出力してみます。
for(int i = 0; i <= 25; i++){
print(String.fromCharCode(i + "A".codeUnitAt(0)));
}
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
同じく、for文でコード単位をループ。
for (int s = "A".codeUnitAt(0); s <= "Z".codeUnitAt(0); s++) {
print(String.fromCharCode(s));
}
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
変数で始まりと終わりをもとめて、while文で終わりを知らせて出力。
int start = "A".codeUnitAt(0);
int end = "Z".codeUnitAt(0);
while (start <= end) {
print(String.fromCharCode(start));
start++;
}
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
最後にこちらの配列をA,B,Cに変えてみます。
var list = [for (var i = 0; i < 26; i++) i ];
var list = [for (var i = 0; i <= 25; i++) i ];
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
配列の長さと構造がわかっているのでList.generateを利用し、ループさせます。
var list = List.generate(26, (int index) =>
String.fromCharCode(index + 'A'.codeUnits[0]));
print(list);
// [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]
以上です、ご参考までに。