文字列補間(Interpolated string)と生文字リテラル(Raw string literal)を組み合わせた場合に文字列中で中括弧 "{" "}" を表現するコードを紹介します。
文字列補完と生文字リテラルを利用した以下のコードがあります。
string name = "ぺんぎんクッキー";
int price = 240;
int stock = 15;
string shop = "札幌";
string OutText = $"""品名:"{name}", 価格:{price:d}, 在庫:{stock:d}, 販売店:"{shop}" """;
textBox1.Text = OutText;
文字列部分で価格と在庫の部分を "{" "}" で囲みたいですが、以下のように "{{" "}}" の表現ではビルドエラーとなり通りません。
string OutText = $"""品名:"{name}", {{価格:{price:d}, 在庫:{stock:d}}}, 販売店:"{shop}" """;
この記事では、文字列補間と生文字リテラルを組み合わせた場合に文字列中で中括弧 "{" "}" を表現する記述方法を紹介します。
文字列補間と生文字リテラルを組み合わせた場合に "{" を表現する場合は、文字列補完の$
を$$
に変更します。
この記述により、文字列補完の{
}
は {{
}}
に変わります。{
}
は文字として表現できます。
文字列部分で価格と在庫の部分を "{" "}" で囲む場合は以下のコードになります。
string OutText = $$"""品名:"{{name}}", {価格:{{price:d}}, 在庫:{{stock:d}}}, 販売店:"{{shop}}" """;
下図のフォームを作成します。テキストボックスとボタンを配置します。
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 LiteralString
{
public partial class FormInterpolatedRawStringLiteral : Form
{
public FormInterpolatedRawStringLiteral()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string name = "ぺんぎんクッキー";
int price = 240;
int stock = 15;
string shop = "札幌";
string OutText = $$"""品名:"{{name}}", {価格:{{price:d}}, 在庫:{{stock:d}}}, 販売店:"{{shop}}" """;
textBox1.Text = OutText;
}
}
}
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。下図の表示結果となります。
文字列補完と生文字リテラルを組み合わせた文字列内で中括弧 {
}
を表現できました。
品名:"ぺんぎんクッキー", {価格:240, 在庫:15}, 販売店:"札幌"