标签:
今天,用C#写措施操纵Excel,,读取单元格内容按照所需格局生成字符串,使用String.Format(string format,object arg0)要领。以前只知“{0}”为索引占位符(即格局项),与参数列表中的第一个东西相对应,格局设置过程将每个格局项替换为对应东西的值的文本暗示形式。但此次需将参数东西格局成一对大括号括起来的格局,即返回字符串“{东西arg0的文本暗示形式}”。
[csharp]
//直接加大括号
String.Format("{{0}}",1);//{0}
如果使用上面语句,并不能获得所需功效“{1}”,因为左大括号和右大括号被解释为格局项的开始和结束,如果要在format参数中指定大括号字符,须使用转义序列显示文本左大括号或右大括号。在格局化字符串中这个转义字符还是大括号自己。因此,在固定文本中指定两个左大括号 (“{{”) 以显示一个左大括号 (“{”),或指定两个右大括号 (“}}”) 以显示一个右大括号 (“}”)。
[csharp]
//本例的一种正确方法
String.Format("{{{0}}}",1);//{1}
凭据在format中遇到大括号的挨次依次解释它们,不撑持解释嵌套的大括号。虽然上面能得到正确功效,但解释转义大括号的方法会导致不测的功效。例如,考虑要显示一个左大括号、一个格局化为十进制数的数值和一个右大括号的格局项“{{{0:D}}}“。但是,实际是凭据以下方法解释该格局项:
1、前两个左大括号 ("{{") 被转义,生成一个左大括号;
2、之后的三个字符 ("{0:") 被解释为格局项的开始。
3、下一个字符 ("D") 将被解释为 Decimal 标准数值格局说明符,但后面的两个转义大括号 ("}}") 生成单个大括号。由于得到的字符串 ("D}") 不是标准数值格局说明标记,所以得到的字符串会被解释为用于显示字符串“D}”的自界说格局字符串。
4、最后一个大括号 ("}") 被解释为格局项的结束。
5、显示的最终功效是字符串“{D}”。不会显示原来要格局化的数值。
在编写代码时,制止错误解释转义大括号和格局项的一种要领是单独格局化大括号和格局项。也就是说,在第一个格局化操纵中显示文本左大括号,不才一操纵中显示格局项的功效,然后在最后一个操纵中显示文本右大括号。
[csharp]
//正确无误的形式
String.Format("{0}{1}{2}","{",1,"}");//{1}
标签:
原文地点:https://www.cnblogs.com/Alex80/p/8876289.html