C#でFormat関数で中かっこを表示するコードを紹介します。
C#のFormat関数では、複合書式設定を利用した場合、中かっこ"{","}"により、書式指定項目を設定します。そのため、単純に中かっこを記述した場合、書式指定項目と認識され、エラーになることがあります。
Format関数の複合書式設定で中かっこを表示する場合は中かっこを2つ続けて記述します。
出力する文字列 | 複合書式設定に記述する文字列 |
---|---|
{ | {{ |
} | }} |
以下の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つ目までが文字の「}」と判断されるため、意図した動作になりません。
意図した通りの結果を表示する場合は下記のコードに変更します。
textBox1.Text += "{"+string.Format("value:{0:d}", value)+"}";
textBox1.Text += string.Format("{0}value:{1:d}{2}", "{", value, "}");
実行すると下図の結果となり、意図した動作になっています。