原文:C#格式化字符串中转义大括号“{}”

今天,用C#写程序操作Excel,读取单元格内容根据所需格式生成字符串,使用String.Format(string format,object arg0)方法。以前只知“{0}”为索引占位符(即格式项),与参数列表中的第一个对象相对应,格式设置过程将每个格式项替换为对应对象的值的文本表示形式。但这次需将参数对象格式成一对大括号括起来的格式,即返回字符串“{对象arg0的文本表示形式}”。

  1. //直接加大括号
  2. String.Format("{{0}}",1);//{0}

如果使用上面语句,并不能获得所需结果“{1}”,因为左大括号和右大括号被解释为格式项的开始和结束,如果要在format参数中指定大括号字符,须使用转义序列显示文本左大括号或右大括号。在格式化字符串中这个转义字符还是大括号本身。因此,在固定文本中指定两个左大括号 (“{{”) 以显示一个左大括号 (“{”),或指定两个右大括号 (“}}”) 以显示一个右大括号 (“}”)。

  1. //本例的一种正确方式
  2. String.Format("{{{0}}}",1);//{1}

按照在format中遇到大括号的顺序依次解释它们,不支持解释嵌套的大括号。虽然上面能得到正确结果,但解释转义大括号的方式会导致意外的结果。例如,考虑要显示一个左大括号、一个格式化为十进制数的数值和一个右大括号的格式项“{{{0:D}}}“。但是,实际是按照以下方式解释该格式项:

1、前两个左大括号 ("{{") 被转义,生成一个左大括号;

2、之后的三个字符 ("{0:") 被解释为格式项的开始。

3、下一个字符 ("D") 将被解释为 Decimal 标准数值格式说明符,但后面的两个转义大括号 ("}}") 生成单个大括号。由于得到的字符串 ("D}") 不是标准数值格式说明符号,所以得到的字符串会被解释为用于显示字符串“D}”的自定义格式字符串。

4、最后一个大括号 ("}") 被解释为格式项的结束。

5、显示的最终结果是字符串“{D}”。不会显示本来要格式化的数值。

在编写代码时,避免错误解释转义大括号和格式项的一种方法是单独格式化大括号和格式项。也就是说,在第一个格式化操作中显示文本左大括号,在下一操作中显示格式项的结果,然后在最后一个操作中显示文本右大括号。

  1. //正确无误的形式
  2. String.Format("{0}{1}{2}","{",1,"}");//{1}

C#格式化字符串中转义大括号“{}”的更多相关文章

  1. string.format格式化字符串中转义大括号“{}”

    今天,用Java读取配置文件占位符,使用String.Format(string format,object arg0)方法.以前只知“{0}”为索引占位符(即格式项),与参数列表中的第一个对象相对应 ...

  2. 如何在XAML中转义大括号

    原文:如何在XAML中转义大括号 如何在XAML中转义大括号                                       周银辉 我们知道大括号"{}"在XAML中 ...

  3. C#定义类型转化 及 格式化字符串

    operator 关键字 operator 关键字用来重载内置运算符,或提供类/结构声明中的用户定义转换.它可以定义不同类型之间采用何种转化方式和转化的结果. operator用于定义类型转化时可采用 ...

  4. sprintf格式化字符串带来的注入隐患

    原文链接:https://paper.seebug.org/386/ 摘要点关键知识点 <?php $input = addslashes("%1$' and 1=1#"); ...

  5. Python从菜鸟到高手:格式化字符串

    1. 字符串格式化基础 字符串格式化相当于字符串模板.也就是说,如果一个字符串有一部分是固定的,而另一部分是动态变化的,那么就可以将固定的部分做成模板,然后那些动态变化的部分使用字符串格式化操作符(% ...

  6. Python格式化字符串知多少

    字符串格式化相当于字符串模板.也就是说,如果一个字符串有一部分是固定的,而另一部分是动态变化的,那么就可以将固定的部分做成模板,然后那些动态变化的部分使用字符串格式化操作符(%) 替换.如一句问候语: ...

  7. Python格式化字符串~转

    Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作 ...

  8. Python格式化字符串

    在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的pr ...

  9. python 零散记录(三) 格式化字符串 字符串相关方法

    使用 % 符号格式化字符串: """常用转换说明符:""" #%s: 按照str()方式转换 #%r: 按照repr()方式转换 #%d: ...

随机推荐

  1. opencv环境的搭建,并打开一个本地PC摄像头。

    1.opencv环境结构 推荐连结 http://www.cnblogs.com/Anykong/archive/2011/04/06/Anykong_OpenCV1.html 2.以下是基本測试,和 ...

  2. android下获取无线wif信号、ssid、MAC等操作类

    一个android下获取无线wif信号.ssid.MAC等操作的类. WifiAdmin.java package com.afu; import java.util.List; import and ...

  3. mySQL中删除unique key的语法 (删除某个字段的唯一性)

    mySQL中删除unique key的语法 CREATE TABLE `good_booked` (  `auto_id` int(10) NOT NULL auto_increment,  `goo ...

  4. Spring Boot 基础

    Spring Boot 基础 Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot ...

  5. jquery处理页面元素

    处理父级页面中的元素 $(parent.document).find('#hidSendPerson').val(val);$(parent.document).find('#btnGo').clic ...

  6. FTP文件操作之获取文件列表

    前面已经介绍了很多关于FTP对文件的操作,今天再跟大家介绍一个获取文件列表的功能.这个功能应该算是最简单的一个了,它只是获取了一下文件信息,而没有进行实质上的数据传输. 下面是是该功能的核心代码:   ...

  7. 制作简易计算器处理过程Servlet

    CalculationServlet.java: package com.you.servlet; import java.io.IOException; import java.io.PrintWr ...

  8. node.js基础:HTTP服务器

    一个HTTP服务器响应 var http = require('http'); http.createServer(function(request,response){ response.end(' ...

  9. Hibernate HQL详细说明

    1.  Hibernate HQL详细说明 1.1.  hql一个简短的引论 Hibernate它配备了一种非常强大的查询语言.这种语言看起来非常像SQL.但是不要 要对相位的语法结构似,HQL是很有 ...

  10. 大数据的胖哥的方式(9)- 金融业数据仓库的逻辑模型FS-LDM

    介绍: 大数据是不是海市蜃楼,来自小橡子只是意淫奥克斯,大数据的发展,而且要从头开始,基于大数据建设国家.项目-level数据中心行业将越来越多,大数据仅供技术,而非溶液,临数据组织模式,数据逻辑模式 ...