c# - 您如何将 { 和 } 放入格式字符串中

我试图在运行时生成一些代码,在其中我放入了一些样板文件,并允许用户输入实际的工作代码。我的样板代码如下所示:

using System;

public class ClassName
{
    public double TheFunction(double input)
    {
        // user entered code here
    }
}

理想情况下,我想我想使用 string.Format 来插入用户代码并创建一个唯一的类名,但我在格式字符串上遇到异常,除非它看起来像这样:

string formatString = @"
using System;

public class ClassName
{0}
    public double TheFunction(double input)
    {0}
        {2}
    {1}
{1}";

然后我这样调用string.Format:

string entireClass = string.Format(formatString, "{", "}", userInput);

这很好,我可以处理在格式字符串中使用 {0} 和 {1} 代替花括号的丑陋之处,只是现在我的用户输入也不能使用花括号。有没有办法将格式字符串中的花括号转义,或者将用户代码中的花括号转换为 {0} 和 {1} 的好方法?

顺便说一句,我知道这种事情是一个等待发生的安全问题,但这是一个 Windows 窗体应用程序,供未连接到网络的系统内部使用,因此在这种情况下风险是可以接受的。

最佳答案

通过将它们加倍来逃避它们:

string s = String.Format("{{ hello to all }}");
Console.WriteLine(s); //prints '{ hello to all }'

来自 http://msdn.microsoft.com/en-us/netframework/aa569608.aspx#Question1

https://stackoverflow.com/questions/160742/

相关文章:

django - 是否有 django 模板过滤器来显示百分比?

sql - 我可以在 DBIx::Class 中漂亮地打印 DBIC_TRACE 输出吗?

r - 如何删除数字 R 变量中的前导 "0."

intellij-idea - 在 PyCharm 中用换行符包装注释

postgresql - 如何将 "1 day 01:30:00"之类的间隔转换为 "25:30:0

python - 在 Python 中格式化电话号码的最佳方法是什么?

c++ - 是否可以自定义 XCode 的缩进样式?

html - 在每个标记属性上换行并在 Visual Studio HTML 代码编辑器中保持对齐

r - 如何使用 R 的 sprintf 创建固定宽度的字符串,并在 END 处填充空白?

javascript - 在 JavaScript 中将十六进制数字格式化为短 UUID