文字列補間と生文字リテラルを組み合わせた場合に文字列中で中括弧 "{" "}" を表現する

文字列補間(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}}" """;

プログラム例

UI

下図のフォームを作成します。テキストボックスとボタンを配置します。

文字列補間と生文字リテラルを組み合わせた場合に文字列中で中括弧

コード

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}, 販売店:"札幌" 

文字列補間と生文字リテラルを組み合わせた場合に文字列中で中括弧


AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2024-12-30
Copyright © 1995–2025 iPentec all rights reserverd.