hakeの日記

Windows環境でプログラミングの勉強をしています。

C# - 文字列の書式指定

引用符の左に@をつけた文字リテラルエスケープ文字をそのまま出力する。またC#6以降では$を付けて文字列中の変数展開が可能みたいですが、今の実行環境ではエラーの為コメントにしてます。
文字列中への変数の埋め込みは{ }の中で書式を指定することで行う。出力する場合は、Console.Write()等の引数として、string値を得る場合は、Srting.Format()の引数として指定する。
書式の指定は以下の形式になる。

 { i , aa : Cbb}
  • i : 変数の指定
  • aa : 表示長および寄せ方向の指定
  • C : 書式種類の指定
  • bb : 書式での桁数の指定

 

using System;

//文字列の書式指定

class MyMain
{
    static void Main(string[] args)
    {
        //
        //文字列リテラル
        //
        //通常
        Console.WriteLine("通常出力 : Hello\nWorld");
        //"の表示
        Console.WriteLine("\"表示");
        //エスケープの無効化
        Console.WriteLine(@"エスケープ無効 : Hello\nWorld");
        //"の表示
        Console.WriteLine(@"""表示");


        //
        //変数の埋め込み
        //
        string s1 = "abc";
        string s2 = "def";
        string s;

        Console.WriteLine("変数埋込み : s1 = {0}, s2 = {1}", s1, s2);
        //C# 6以降
        //Console.WriteLine($"変数埋込み : s1 = {s1}, s2 = {s2}");

        //指定した書式の文字列生成
        s = String.Format("変数埋込み : s1 = {0}, s2 = {1}", s1, s2);
        Console.WriteLine(s);
        // {}の表示
        Console.WriteLine("{}の表示");
        // {n}の表示
        Console.WriteLine("{{0}}は{0}に置き換えられる", s1);

        //右寄せ
        Console.WriteLine("10桁右寄せ : s1 = [{0,10}]",  s1);//[       abc]
        //左寄せ
        Console.WriteLine("10桁左寄せ : s1 = [{0,-10}]", s1);//[abc       ]


        int d1 = 123;
        Console.WriteLine("通常         : {0}",       d1);//123
        Console.WriteLine("通常(G指定)  : {0:G}",     d1);//123
        Console.WriteLine("10進桁指定   : {0:D4}",    d1);//0123
        Console.WriteLine("16進         : {0:X}",     d1);//7B
        Console.WriteLine("16進4桁      : {0:X4}",    d1);//007B

        int d2 = 12345;
        Console.WriteLine("3桁区切り    : {0:N}",     d2);//12,345.00
        Console.WriteLine("3桁区切り    : {0:N0}",    d2);//12,345

        Console.WriteLine("通貨         : {0:C}",     d2);//\12,345

        double f1 = 4.56789;
        Console.WriteLine("通常           : {0}",     f1);//4.56789
        Console.WriteLine("通常(G指定)    : {0:G}",   f1);//4.56789
        Console.WriteLine("固定小数点     : {0:F}",   f1);//4.57
        Console.WriteLine("固定小数点(4桁): {0:F4}",  f1);//4.5679
        Console.WriteLine("指数表示       : {0:E}",   f1);//4.567890E+000
        Console.WriteLine("指数表示(4桁)  : {0:E4}",  f1);//4.5679E+000

        double f2 = 0.9;
        Console.WriteLine("パーセント     : {0:P}",   f2);//90.00%

    }
}