string.Format 异常 输入字符串的格式不正确

最近做一个项目,在使用string.Format对数据进行整理的时候,一直报错:输入字符串的格式不正确。

纠结了很久。最后终于查了下资料终于知道了问题所在。现在将这个问题记录一下:


在代码中,需要将结果以Json格式,输出。最开始报错,写的代码如下:

        public void TEST()
        {
            try
            {
                string t = "Jim";
   		        string sresult = string.Format("{name:\"{0}\"}", t);//这里报错
                Console.Write(sresult);
            }
            catch (Exception ex)
            {
            }
        }


后来查找了一些资料之后,才知道问题所在。

C# 中使用类似 {0}, {1:yyyy-MM-dd} 这样的格式占位符,如果被格式化字符串本身包含 { 或者 } 怎么办呢?答案是:用两个 { 或者 }连写表示单个。

我的代码问题就出在这个地方。修改之后,就好了,修改后的代码如下:

        public void TEST()
        {
            try
            {
                string t = "Jim";
                string sresult = string.Format("{{name:\"{0}\"}}", t);
                Console.Write(sresult);
            }
            catch (Exception ex)
            {
            }
        }

事实上,很多情况下带特殊含义的字符都是这样转义的:如, 

C#  中,当字符串常量带 @  前导的时候,用两个 " 连写表示一个 " (半角双引号) 

        public void TEST()
        {
            try
            {
                string sresult = @"this is ""Jim""";
                string tresult=@"this is 'Jim'";
                string tresult = @"this is "Jim"";//错误
                Console.Write(sresult);
            }
            catch (Exception ex)
            {
            }
        }

SQL 字符串常量,用两个 ' 连写表示一个 ' (半角单引号) 

DECLARE @str6 varchar(100)
SET @str6 = 'My UserName is ''Jinglecat''.' 
PRINT @str6 -- My UserName is 'Jinglecat'.

正则表达式中用,两个 $ 连写表示一个 $  (dollar)


 

你可能感兴趣的:(.net基础)