如何让String.Format不解析{0}
我正在编写一个代码生成工具,经常会有类似的行
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);
然而,我遇到的问题是当我遇到这样的一行时。
sp.AppendFormat("return String.Format(\"{0} = '{0}'\", cmbList.SelectedValue);", columnName);
我希望第一个{0}
转入columnName的值,但是我希望第二个{0}
保持String.Format
,因此内部String.Format
将正确处理它。
我该怎么做呢?
使用双花括号:
string result = string.Format("{{Ignored}} {{123}} {0}", 543);
可以使用两个大括号字符来转义大括号。 string.Format
的文档说明:
要以格式指定单个文字大括号字符,请指定两个前导或后缀大括号字符; 也就是说,“{{”或“}}”。
在你的例子中
sp.AppendFormat("return String.Format(\"{0} = '{{0}}'\",cmbList.SelectedValue);", columnName);
sp.AppendFormat("return String.Format(\"{0} = '{{0}}'\", cmbList.SelectedValue);", columnName);
使用“{{0}}”。 这将导致字符串“{0}”
String.Format(\"{0} = '{{0}}'\",