转义string.format的花括号

Aad*_*mia 3 c#

void f(string message)
{
    string.Format(message,"x",y");
}
Run Code Online (Sandbox Code Playgroud)

f()由g调用:

g()
{
   f(SomeJson+"{0}");
}
Run Code Online (Sandbox Code Playgroud)

json中的花括号被解释为string.format()f()中值的占位符.有没有办法让花括号逃脱?

Ant*_*t P 10

将它们加倍:

f(SomeJson+"{{0}}");
Run Code Online (Sandbox Code Playgroud)

或者用JSON替换它们,如果这是你需要的:

f(SomeJson.Replace("{", "{{")
    .Replace("}", "}}") + "{0}");
Run Code Online (Sandbox Code Playgroud)

您还可以将此作业委派给扩展方法:

public static class StringExtensions
{
    public static string EscapeBraces(this string s)
    {
        return s.Replace("{", "{{")
                .Replace("}", "}}");
    }
}

f(SomeJson.EscapeBraces() + "{0}");
Run Code Online (Sandbox Code Playgroud)

或者,正如Ergwun所说,您可以简单地将这些值连接起来.不过,我的假设是,在实际代码中,这不像在这个简单的例子中那么简单.