Format関数の出力で中かっこ "{" "}" を表示する
C#でFormat関数で中かっこを表示するコードを紹介します。
概要
C#のFormat関数では、複合書式設定を利用した場合、中かっこ"{","}"により、書式指定項目を設定します。そのため、単純に中かっこを記述した場合、書式指定項目と認識され、エラーになることがあります。
対応方法
Format関数の複合書式設定で中かっこを表示する場合は中かっこを2つ続けて記述します。
中かっこのエスケープ
出力する文字列 | 複合書式設定に記述する文字列 |
{ | {{ |
} | }} |
サンプル
UI
以下のUIを作成します。フォームにTextBoxとButtonを1つずつ配置します。
コード
以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace BracesEscapeDemo
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int value = 4096;
textBox1.Text += string.Format("{{value}}:{0:d}", value);
}
}
}
実行結果
プロジェクトを実行します。下図のフォームが表示されます。
ボタンをクリックします。テキストボックスに結果が表示されます。下図の結果となりました。
Format関数の出力で、中かっこが出力できていることが確認できます。
注意
下記のコードのように、中かっこが入れ子になった場合、意図したとおりの動作にならない場合があります。
textBox1.Text += string.Format("{{value:{0:d}}}", value);
3個続けて"}"がある場合、先頭から2つ目までが文字の「}」と判断されるため、意図した動作になりません。
意図した通りの結果を表示する場合は下記のコードに変更します。
例1: 中かっこ部分をFormat関数に含めないコード
textBox1.Text += "{"+string.Format("value:{0:d}", value)+"}";
例2: 中かっこをFormat関数の書式指定項目で出力するコード
textBox1.Text += string.Format("{0}value:{1:d}{2}", "{", value, "}");
実行すると下図の結果となり、意図した動作になっています。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2014-12-03
改訂日: 2023-03-26