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

  //直接加大括号

  String.Format("{{0}}",1);//{0}

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

  //本例的一种正确方式

  String.Format("{{{0}}}",1);//{1}

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

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

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

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

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

  //正确无误的形式

  String.Format("{0}{1}{2}","{",1,"}");//{1}

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

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

    原文:C#格式化字符串中转义大括号"{}" 今天,用C#写程序操作Excel,读取单元格内容根据所需格式生成字符串,使用String.Format(string format,ob ...

  2. String.format() 格式化字符串

    1.几种常见的转换符 转换符 说明 实例 %d 整数类型(十进制) 99 %f 浮点类型 99.99 %s 字符串类型 "mingrisoft" %c 字符类型 'm' %b 布尔 ...

  3. WPF中XAML中使用String.Format格式化字符串示例

    货币格式 <TextBlock Text="{Binding Price, StringFormat={}{0:C}}" /> // $123.46 货币格式,一位小数 ...

  4. C# String.Format 格式化字符串 数字/时间

    首先献给只想知道结果的人 格式化 DateTime 对象 标准 数字 格式化 Int Decimal Float Double 关于这一块一直不是很清楚,MSDN 上也不够清晰. 就花了点时间敲了一下 ...

  5. c# 字符串连接使用“+”和string.format格式化两种方式

    参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...

  6. Python用format格式化字符串

    format是是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺 ...

  7. 使用printf和String.format格式化输出

    格式化输出 在哪些情况下使用格式化输出: 异常打印到日志中使用格式化输出有利于排查错误原因: printf格式化 示例: public class PrintfTest { public static ...

  8. 【转载】 C#使用String.Format拼接字符串

    在C#程序开发过程中,很多时候会使用字符串拼接,最简单的字符串拼接操作就是所有的字符串使用加号+相加连接起来,但这种代码形式非常不适合代码维护阅读,尤其是拼接字符串语句比较复杂的时候,如拼接SQL语句 ...

  9. String.Format 格式化货币的小问题

    今天在开发过程中,遇到一件让我觉得比较纳闷的事情:用String.Format 格式化充值金额的时候,我这样处理: String.Format("{0:C2}", dr[" ...

随机推荐

  1. Kafka监控KafkaOffsetMonitor【转】

    1.概述 前面给大家介绍了Kafka的背景以及一些应用场景,并附带上演示了Kafka的简单示例.然后,在开发的过程当中,我们会发现一些问题,那就是消息的监控情况.虽然,在启动Kafka的相关服务后,我 ...

  2. for..of和for..in和map、filter等循环区别

    1.for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值. for in遍历比较适合遍历对象,不太适合数组,有可能遍历出来的不按照顺序 遍历数组 ,,,,,] for (var ...

  3. C++ 解析Json——jsoncpp

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录.Jsoncpp是个跨 ...

  4. $Django Paginator分页器 批量创建数据

    1批量插入数据: User_list=[]for i in range(100): User_list.append(User(name='小明%s'%i,pwd='abcdefg%s'%i))# 两 ...

  5. web@h,c小总结

    问题0:元素内联元素,行内元素,行内块元素.        内联: 宽高M,P都有效        行内元素:无宽高,内容撑开,M,P左右有效        行内块元素:可设宽高,内容撑开,M,P都有 ...

  6. 转-C语言中.h和.c文件解析

    C语言中.h和.c文件解析(很精彩)   简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词 ...

  7. 无备份mysql删除表后恢复

    mysql从5.6.17开始自动设置innodb_file_per_table为on,每个表设置单独表空间,数据不是集中存放在ibdata1里.下面测试下无备份后drop表后的恢复. 前奏生成数据字典 ...

  8. [图形]图形API的两种模式

    图形API可以分为retained-mode APIs(保存模式API)和immediate-mode APIs(中间模式API). Direct2D是immediate-mode API,而Wind ...

  9. Android一个自定义的进度环:ProgressChart

    源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/ProgressChart.zip 因项目需要,自己尝试定义了一个进度环,用于显示进度,实现效果如 ...

  10. JavaScript 输入小数点(event.key或event.code)

    1. 概述 1.1 说明 在开发过程中,有时候需要仅输入数字与小数,故记录下使用过的功能,以便后期使用. 1.2 key 定义:按下按键时返回的标识符,按键标识符是表示键盘按钮的字符串(如1,2,a等 ...