2020年10月26日
川俣晶の縁側ソフトウェアC# コーディング How To total 1119 count

【入門級】書式指定文字列の出番

Written By: 川俣 晶連絡先

なぜ書式指定はあるの? §

 Console.WriteLine($"{……}")と書けば簡単なのに、なぜConsole.WriteLine("{0}",……)のような書式があるのでしょうか。順番を指定する文字が必要とされる分だけ冗長でもっさりしているように見えます。

 実はこれ、語順が変化する国際化が絡むと便利なのです。順番を指定できると言うことは、特定の語句をはめ込む場所が前後に移動しても構わないことを意味するからです。

 サンプルソースを見ると具体的な使い方が分かるでしょう。

 実際には、"Tom","School"のような語句も各国語で差し替えて使います。

 たいていそれらは文字列リソースに埋め込まれます。

 そうすると、ローカライズは文字列リソースの差し替えだけで済むようになります。

 文字列に埋め込む場所が前後しても対応できます。

罠の数々 §

  • Console.WriteLine("{0}+{0}={2}", 1, 2, 3);はエラーにならず、結果は1+1=3になってしまうことに注意しよう。

参考リンク §

Console.WriteLine メソッド

String.Format メソッド

 コンソールに出力するときはConsole.WriteLine メソッドだが、ほとんど同じ操作を文字列に対して行うString.Format メソッドもある。これを使うと、ほとんど何に対してでも書式整形の機能を利用できる。上記のリンクから使い方を確かめてみよう。

リポジトリ §

https://github.com/autumn009/cshowto

Format §

using System;

class Program

{

    private static void sub(string format)

    {

        Console.WriteLine(format,"Tom","School");

    }

    static void Main()

    {

        sub("{0} goes to {1}.");

        sub("{1} へ {0} は行きました。");

    }

}

実行結果

Tom goes to School.

School へ Tom は行きました。

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?