1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dart 初級 String.fromCharCodesでアルファベット出力

Last updated at Posted at 2022-08-22

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メソッドを付与していきます。まずは、startendの変数にラテン語AZのコードユニットをいれて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]

以上です、ご参考までに。

1
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?