繁体   English   中英

c#:字符串格式

[英]c#: string format

我遇到了一个代码。 任何人都可以对此有所了解。 如果有人发现它有点基本,那就好。

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

感谢您的时间。

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

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

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

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

0,2将添加空格的左侧,如果所得到的符号数是小于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。

有关格式字符串的更多信息,请参见此处:
复合格式
标准数字格式字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM