您当前的位置:KKBlog > 学无止境 > ASP.NET

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)


二维码
意见反馈 二维码