C# 打印一个字符串,例如;你好{0}”;
在应用程序中,我从以下格式的配置加载字符串C# 打印一个字符串,例如;你好{0}”;,c#,.net,C#,.net,在应用程序中,我从以下格式的配置加载字符串stackoverflow.com?questionId={0}。显然,它们在运行时填充并用于查询字符串 我想在启动时使用以下方法记录这些字符串: void log(string message, params object[] vars) { string s = String.Format(message, vars); Console.WriteLine(s); }
stackoverflow.com?questionId={0}
。显然,它们在运行时填充并用于查询字符串
我想在启动时使用以下方法记录这些字符串:
void log(string message, params object[] vars)
{
string s = String.Format(message, vars);
Console.WriteLine(s);
}
但是,正如您所期望的那样,String.Format
会抛出一个异常,因为调用:log(String.Format(“添加新提要”{0}',“stackoverflow.com?questionId={0}”)
-String.Format
尝试在“log()”内替换{0}/code>
有没有一种简单的方法可以转义{
字符,这样就不会尝试替换?我找到了两个答案
首先,我通过以下操作避开了大括号:
log(String.Format(“添加新提要“{0}”,feedStr.Replace(“{”,“{”).Replace(“}”,“}”);
这个很好用
其次,正如马丁·布朗所建议的那样,我意识到我可以:
log("Adding new feed '{0}'", feedStr);
只要加倍:{0}
:{{0}
但是@DmitryBychenko打破了实际的使用……这些应该被替换,问题只是它们的日志记录。啊,我看到了这个困境。你不能两全其美。你可能需要在日志方法中添加一个重载,它不接受参数,也不调用字符串.format
。投票重新打开since你不是问“如何引用占位符”,而是“我有时如何假装它们不是占位符”试试:log(@“stackoverflow.com?questionId={0}”)
我不确定它是否有效,但你可以试试。不要使用string.format()
然后使用字符串串联,比如string str=“Adding new feed{0}”+string.format(“stackoverflow.com?questionId={0}”,值)