p.28 フォーマット指定子を使った変数の表示
・変数の値と文字列を連結するのは手軽だが可読性が低く、見違えやすい
・そこで、文字列の中に番号つきで置き場所を指定できるのがフォーマット指定子
・Console.WriteLineとConsole.Writeで利用可能
・書式: Console.WriteLine("フォーマット指定子を使った文字列", 値または式);
※ 変数は式と同じ扱いになる
・フォーマット指定子は文字列の中に「{番号}」を埋め込める仕掛けで、番号は0番からいくつでも指定できる
・例:
Console.WriteLine("私が{0}番!", 1); //「私が1番!」と表示
Console.WriteLine("私が{0}番!君は{1}番!", 1, 2); //「私が1番!君は2番!」と表示
Console.WriteLine("1辺10の正方形の面積は{0}", 10 * 10);
int n = 10; Console.WriteLine("1辺{0}の正方形の面積は{1}", n, n * n);
・フォーマット指定子の中に同じ番号を複数指定して同じ値を埋め込むこともできる
Console.WriteLine("私が{0}番!君も{0}番!", 1); //「私が1番!君も1番!」と表示
・フォーマット指定子の番号は昇順でなくても良い
Console.WriteLine("私が{1}番!君は{0}番!", 2, 1); //「私が1番!君は2番!」と表示
p.28 text04.cs
//p.28 text04.cs
using System;
class Text03
{
public static void Main() //アプリケーションの実行開始場所
{
int x = 10;
Console.WriteLine("x = {0}", x); //「x = 10」と表示
Console.WriteLine("x = {0}, xの10倍は{1}です", x, x * 10); //「x = 10, xの10倍は100です」と表示
Console.WriteLine("{0}は{1}ですが、{2}は{1}ではありません。", "猫", "ほ乳類", "とかげ");
}
}
p.29 桁数の指定
・フォーマット指定子の番号の後に「,桁数」を指定できる
・この桁数は「最低限で何桁とるか」のことで、表示内容が桁数を超えていると、指定が無視される
例:int x = 10; Console.WriteLine("{0, 5}", x); //前に3空白入れて「 10」と表示
例:int x = 12345; Console.WriteLine("{0, 3}", x); //桁数は無視され「12345」と表示
・空白が前に入ることを右詰めという
・桁数の前に「-」をつけると左詰めになり、空白が後ろにつく
例:int x = 10; Console.WriteLine("{0, -5}", x); //前に3空白入れて「10 」と表示
p.30 text05.cs
//p.30 text05.cs
using System;
class Text03
{
public static void Main() //アプリケーションの実行開始場所
{
int x = 10, y = 123456789;
Console.WriteLine("12345678901234567890123456789"); //目盛り
Console.WriteLine("{0, 10}", "abc"); //「 abc」と表示
Console.WriteLine("{0, 5}", "def"); //「 def」と表示
Console.WriteLine("{0, 0}", "ghi"); //「ghi」と表示
Console.WriteLine("{0, 10}{1, 10}", "あ", "い"); //「 あ い」と表示
Console.WriteLine("{0,-10}{1,-10}", "あ", "い"); //「あ い 」と表示
Console.WriteLine("x = {0, 5}, y = {1, 3}", x, y); //「x = 10, y = 123456789」と表示
}
}
p.30 標準書式指定文字を使った書式の指定
・フォーマット指定子の番号の後に「,桁数:書式指定文字」を指定できる ・書式指定文字によって、16進数表記や指数表示、パーセント表示などが可能 ※ 書式指定文字Gは「E、Fの短い方」ではなく「数値の型や、精度指定子が指定されているかどうかに応じて、 固定小数点表記または指数表記のいずれかのより簡潔な形式」という仕様
p.30 text05.cs
//p.30 text05.cs
using System;
class Text03
{
public static void Main() //アプリケーションの実行開始場所
{
Console.WriteLine("D{0, 10:D}", 123); //整数の10進数表示「D 123」
Console.WriteLine("X{0, 10:X}", 123); //整数の16進数表示「X 7B」
Console.WriteLine("E{0, 10:E}", 123.456); //指数表示「E1.234560E+002」
Console.WriteLine("F{0, 10:F}", 123.456); //浮動小数点表示「F 123.46」
Console.WriteLine("F{0, 10:F5}", 123.456); //浮動小数点表示(小数点以下5桁)「F 123.45600」
Console.WriteLine("C{0, 10:C}", 123456); //通貨表示「C \123,456」
Console.WriteLine("N{0, 10:N}", 1234.4568); //桁区切り浮動小数点表示「N 1,234.46」
Console.WriteLine("P{0, 10:P}", 0.05); //パーセント表示「P 5.00%
Console.WriteLine("G{0, 10:G}", 123.456); //固定小数点表記か指数表記の簡潔の方「G 123.456」
}
}
p.32 カスタム書式指定文字を使った書式の指定
・標準書式指定文字の代わりに「0」で先行ゼロや後続ゼロを指定したり「.」で小数点位置を指定できる ・小数点位置のみを指定するには「0」ではなく「#」を用いる ・「0」や「#」の数で「最低限で何桁とるか」を指定できる ・桁数指定と併用できる ・「0,0」または「#,#」とすることで3桁カンマ区切りができる ・p.33 text07.csの018、019行目のような複雑な指定方法もある
提出:アレンジ演習 p.33 text07.cs
・カスタム書式指定「0,0」に対して負の数-123456789を指定するとどうなるか確認しよう