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)


 

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值