如何让String.Format不解析{0}

Sco*_*ain 2 c# string.format code-generation

我正在编写一个代码生成工具,经常会有类似的行

StringBuilder sp = new Stringbuilder();
sp.AppendFormat("        public {0}TextColumn()\n", className);
sp.AppendLine("        {"
sp.AppendLine("            Column = new DataGridViewTextBoxColumn();");
sp.AppendFormat("            Column.DataPropertyName = \"{0}\";\n", columnName);
Run Code Online (Sandbox Code Playgroud)

然而,我遇到的问题是当我遇到像这样的一行时.

sp.AppendFormat("return String.Format(\"{0} = '{0}'\", cmbList.SelectedValue);", columnName);
Run Code Online (Sandbox Code Playgroud)

我想第一个{0}在转向任何COLUMNNAME的价值,但我想seccond {0}独处因此内部String.Format会正确地处理它.

我该怎么做呢?

Flo*_*chl 13

使用双花​​括号:

string result = string.Format("{{Ignored}} {{123}} {0}", 543);
Run Code Online (Sandbox Code Playgroud)


Dir*_*mar 7

可以使用两个大括号字符来转义大括号.string.Format各州的文件:

要以格式指定单个文字大括号字符,请指定两个前导或尾随大括号字符; 也就是说,"{{"或"}}".

在你的例子中

sp.AppendFormat("return String.Format(\"{0} = '{{0}}'\",cmbList.SelectedValue);", 
    columnName);
Run Code Online (Sandbox Code Playgroud)