【ワレコC#】Console.WriteLine()書式指定で右詰め・ゼロ埋め・桁指定・16進など

この記事は約6分で読めます。
スポンサーリンク

ワテの場合、C# を使い始めてからかなりの年月が経つのだが、Console.WriteLine() の書式指定が未だに覚えられない。

Console.WriteLine() とは、C#のコンソールアプリケーション、つまり実行するとコンソール画面(所謂DOSウインドウ)を表示してそこに実行結果を出力させたりあるいはキーボードからの入力を読み取ったりするアプリケーションにおいて、画面出力を行う命令だ。

それに対して、Windowsフォームアプリならデフォルトではコンソールを出さないようになっている。その場合には、後から AllocConsole(), AttachConsole(), FreeConsole() などの手法を使えばコンソール画面を出したり消したりする事が可能だ。

当記事では、C#のコンソール画面に数字を出力する場合の書式指定で

  • 右詰め
  • ゼロ埋め
  • 桁指定
  • 16進

などに付いて調査した。

では、本題に入ろう。

スポンサーリンク
ワテ推薦のプログラミングスクールで学ぶ
スポンサーリンク
スポンサーリンク

C#のコンソール画面に書式指定して数字を出力する

さて、良く使う書式設定の一つに、整数を出力する場合がある。

以下、自分用のメモとしてまとめてみた。

整数 200 を各種の形式で出力する例だ。

希望出力形式 出力例 書式
10進 200 {0:d}
10進 9桁 左詰 200______ {0,-9:d}
10進 9桁 右詰 ______200 {0,9:d}
10進 6桁 0埋 000200 {0:d6}
10進 9桁 0埋 左詰 6桁 000200___ {0,-9:d6}
10進 9桁 0埋 右詰 6桁 ___000200 {0,9:d6}
16進 x小文字 c8 {0:x}
16進 6桁 0埋 0000c8 {0:x6}
16進 9桁 0埋 右詰x ___0000c8 {0,9:x6}
16進 9桁 0埋 右詰X ___0000C8 {0,9:X6}
16進 9桁 0埋 左詰X 0000C8___ {0,-9:X6}

などかな。

なお {0:d} などの書式の数字の 0 は書式指定で

 Console.WriteLine( "{0}、{1}", "第1番目の引数",  "第2番目の引数");

と並べた場合の最初の引数(第一番目)を意味している。

必要に応じて {0}, {1}, {2} などに置き換えると良いだろう。

 

そのサンプルソースは以下の通り。

C# Console.WriteLine 右詰め、ゼロ埋め、桁指定、16進など

与えられた整数に対して、出力桁数の指定、右詰め、左詰め、ゼロ埋めなどを行ってみた。

public static void console_wrieline_test()
{
    int i = 200;
    Console.WriteLine("->{0:d}<-    ", i); // 10進                  ->200<-
    Console.WriteLine("->{0,-9:d}<- ", i); // 10進 9桁 左詰         ->200      <-
    Console.WriteLine("->{0,9:d}<-  ", i); // 10進 9桁 右詰         ->      200<-
    Console.WriteLine("->{0:d6}<-   ", i); // 10進 6桁 0埋          ->000200<-
    Console.WriteLine("->{0,-9:d6}<-", i); // 10進 9桁 0埋 左詰 6桁 ->000200   <-
    Console.WriteLine("->{0,9:d6}<- ", i); // 10進 9桁 0埋 右詰 6桁 ->   000200<-
    Console.WriteLine("->{0:x}<-    ", i); // 16進 x小文字          ->c8<-
    Console.WriteLine("->{0:x6}<-   ", i); // 16進 6桁 0埋          ->0000c8<-
    Console.WriteLine("->{0,9:x6}<- ", i); // 16進 9桁 0埋 右詰     ->   0000c8<-
    Console.WriteLine("->{0,9:X6}<- ", i); // 16進 9桁 0埋 右詰X    ->   0000C8<-
    Console.WriteLine("->{0,-9:X6}<-", i); // 16進 9桁 0埋 左詰X    ->0000C8   <-
}

 

こんな感じかな。

10進の場合、dでもDでも同じだ。

16進の場合には、xとXが使えるが、大文字、小文字に応じて出力結果のアルファベットも大小が変化する。

 

ちなみに、

C/C++ の printf の書式指定もややこしい。

昔、一所懸命覚えていたが、最近は C/C++ をあまり書かなくなってしまったので忘れてしまった。

確か、

%s       文字列

%f20.15   浮動小数点20桁幅に15桁で出力

とかなるんだったかな?

文字列の数字に0を連結する方法

上で紹介した例は、入力が整数だった。

では、整数が文字列型で与えられている場合に、全体の長さを5文字、左にはゼロを埋めたい。

そう言う場合はどうするか。

  • String.PadLeft メソッド (Int32)
  • String.PadLeft メソッド (Int32, Char)

を使うと良い。

string before = "123";

string after  = brfore.PadLeft(5, '0');

Console.WriteLine("after={0}", after);

その実行結果。

00123

こんな感じだ。

文字列の右側に文字を追加した場合には、

  • String.PadRight メソッド (Int32)
  • String.PadRight メソッド (Int32, Char)

もある。

なお、埋めたいCharを指定しない場合には空白文字で埋められる。

C#関連本を読む

ほんまに楽しいんかい?

と思ったが、川俣 晶さんの本だ。有名な人だ。

ネットの各種解説記事でも良くお世話になった。今も。

 

C#が書ける猫はおらんだろ!

シーとかシャーとか鳴く猫はおるけど。訓練すればシーシャープと鳴くかな。

 

こういうシリーズでC#の本出して欲しい。

 

スポンサーリンク
ワテ推薦のプログラミングスクールで学ぶ
コメント募集

この記事に関して何か質問とか補足など有りましたら、このページ下部にあるコメント欄からお知らせ下さい。

C#Visual Studio
スポンサーリンク
warekoをフォローする
スポンサーリンク
われこ われこ

コメント