c#:字符串格式

本文关键字:格式 字符串 | 更新日期: 2023-09-27 18:06:31

我遇到了一个代码。有人能透露一下吗?如果有人觉得它有点基础,请友善一点。

string str= String.Format("{0,2:X2}", (int)value);

谢谢你抽出时间。

c#:字符串格式

X格式返回value的十六进制表示。

例如,String.Format("{0:X}", 10)将返回"A",而不是"10"

如果您的十六进制表示小于两个符号,X2将向左侧添加

例如,String.Format("{0:X2}", 10)将返回"0A",而不是"A"

如果生成的符号数小于2,0,2将在左侧添加空格

例如,String.Format("{0,3:X2}", 10)将返回" 0A",但不返回"0A"

因此,这种格式{0,2:X2}将以十六进制表示法返回您的值,如果它只有一个符号,则从左起加一个零,如果它是一个符号则从左加一个空格。多次阅读后,您可以看到,,2是多余的,并且可以在不改变行为的情况下将此格式简化为{0:X2}

一些注意事项:

:分离索引号和应用于该对象的特定格式。例如,此代码

String.Format("{0:X} {1:N} {0:N}", 10, 20)

显示,我想用十六进制格式化10(索引0(,然后用数字方式显示20(索引1(,然后也用数字方式格式化10(索引0。

半列左侧的0,2指示索引位置0和应用于结果字符串的格式,2,而不是应用于特定对象。所以这个代码

String.Format("{0,1} {1,2} {0,4}", 10, 20)

将打印具有至少一个符号的第一个数字,具有至少两个符号的第二个数字,然后再次打印具有至少四个符号占用的第一个号码。如果结果字符串中的符号数量较少,则它们将由空格填充。

{0,2:X2}

它分裂成

  1. 0,2-将数字10格式化为10
  2. X2-将数字10格式化为十六进制值0A

更新

代码

String.Format("{0,2:X2}", (int)value); // where value = 10

结果:0A

现场示例:http://ideone.com/NW0U26

我的结论
您可以将"{0,2:X2}"更改为"{0:X2}",在此处进行示例。

参考链接:MSDN

根据MSDN,格式字符串具有以下格式:

{index[,alignment][:formatString]}

我们可以在您的格式字符串中找到所有这些组件(最后两个是可选的(:

0是要使用的参数的索引
,2对齐部分,如果结果短于此,则用空格填充
:X2formatString部分。这意味着数字将以十六进制(大写(格式格式化,最小宽度为2。如果生成的数字少于2位,则在左侧用零填充。

在这种特定情况下,对齐说明符是多余的,因为X2已经指定了最小宽度2。

有关格式字符串的详细信息,请参阅此处:
复合格式
标准数字格式字符串