【Swift】配列をコンソールにテーブル形式で表示する

見づらい配列を Xcode コンソールにテーブル表示します。

というのをやってみました。

等幅フォント 英語:日本語 = 1:2 が必要です。


 

🤔 文字数のカウント

String.isASCII を使ってアスキー文字なら 半角 で 1、

その他は 全角 で 2、

としてカウントします。


print(
  Array("1234ご")
    .map { $0.isASCII ? 1 : 2 }
    .reduce(0, +)
)

// 6

Array.reduce() で一文字ごとのカウント数を合計しています。

👉 reduce(_:_:) | Apple Developer Documentation hatena-bookmark

こんなことができるんですね !

 

🤔 文字列のパディング

String.padding(toLength:withPad:startingAt:)

を使おうとしたけれど、

うまくいかなかったので以下のようにやります。


print(
  String(
    repeating: "*",
    count: 10 - 6
  ) + "みかん"
)

// ****みかん

半角10文字分まで文字列「みかん」をパディングしています。

👉 padding(toLength:withPad:startingAt:) | Apple Developer Documentation hatena-bookmark

 

🤔 まとめ

そんな処理を使って、

以下の順番で処理していきます。


1. 縦横を入れ替え(転置)したあと、

2. 1行ごとに最大半角文字数をカウントして、

3. それぞれをパディングして、

4. 再度転置して出力する

転置を使うことで、

テーブル縦方向の最大文字数を取得しやすくしています。

👉 【Swift】2次元配列 で 転置行列 ( transpose matrix ) hatena-bookmark



しかし、

絵文字の文字幅って微妙です。


関連ワード:  iOSiPhonemacmacOSSwift今さら聞けない初心者開発