转义string.format的花括号

时间:2013-09-18 07:51:16

标签: c#

void f(string message)
{
    string.Format(message,"x",y");
}

f()由g:

调用
g()
{
   f(SomeJson+"{0}");
}

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

1 个答案:

答案 0 :(得分:10)

将它们加倍:

f(SomeJson+"{{0}}");

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

f(SomeJson.Replace("{", "{{")
    .Replace("}", "}}") + "{0}");

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

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

f(SomeJson.EscapeBraces() + "{0}");

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