C# 格式化没有字符串的字符串。格式化?

C# 格式化没有字符串的字符串。格式化?,c#,string.format,C#,String.format,我添加了一个int类型的变量,并使用它来调用如下内容: x.ToString("0000"); 我将x更改为typestring,现在上述内容无效。是现在格式化x的唯一方法: string.Format("{0:0000}",x); 还是有捷径 我正在使用StringBuilder构建字符串,同样的方法是否适用于AppendFormat?否 必须将整数的字符串表示形式转换为实际整数,以便使用所需数量的前导零正确格式化 如果字符串已经是这种格式,为什么需要重新格式化?您不能像格式化数值一样格式

我添加了一个
int
类型的变量,并使用它来调用如下内容:

x.ToString("0000");
我将
x
更改为type
string
,现在上述内容无效。是现在格式化
x
的唯一方法:

string.Format("{0:0000}",x);
还是有捷径

我正在使用
StringBuilder
构建字符串,同样的方法是否适用于
AppendFormat

必须将整数的字符串表示形式转换为实际整数,以便使用所需数量的前导零正确格式化


如果字符串已经是这种格式,为什么需要重新格式化?

您不能像格式化数值一样格式化字符串,因此如果要对字符串应用数值格式,必须首先将其解析为数字:

Int32.Parse(x).ToString("0000")
没有真正的捷径

Int32
不知道int应该有多少前导零

将格式设置为字符串是正确的。如果你用它来显示东西,它应该不是一个真正的问题(如果你想执行数字操作,你仍然有
x


AppendFormat
的工作原理类似于
string.Format
,但它会附加到调用它的StringBuilder对象。

不幸的是,这是最好的方法。请记住,每种类型都有自己的ToString方法,可以被重写。int类型的ToString允许您在转换为字符串时传递格式以格式化整数。日期时间也类似。但是,字符串类型的ToString只返回字符串,因为源已经是字符串类型。要格式化字符串,必须调用string.format。

MSDN显示了使用说明符的一些方法:

范例

x.ToString("G");
此链接列出了所有格式选项:

将提供与相同的结果

x.ToString("0000"); 
假设
x
仍然是一个数字(它是一个
string
,因此如果不至少
TryCast()
,就无法确定这一点。

使用字符串插值(从C#6开始)

{[,][:]}

以你的例子:


$“{x:0000}”

不太可能,基本上就是这样。您正在格式化字符串,不是吗?那么为什么不使用string.Format?您必须将字符串还原为数字才能应用新格式。数字没有格式,字符串不是数字。
string.Format({0:0000}),x的结果是
对于不同类型的x(即
int
string
)是不同的。因此,我猜使用上述表达式不会得到期望的结果。@TimSchmelter-这是我过去常做的,只是不确定是否有较短的方法。@Xaisoft:在您要显示或打印对象的最后一个位置将对象转换为字符串,而不是更早。仅供参考,这里有标准的
.ToString()
x.PadLeft(4,'0')
?@Xaisoft:没有那么无意义,至少它是有效的…使用
string.Format(“{0:0000}”,x)
x
是字符串时是无意义的,因为格式被忽略。如果
x
包含例如
“42”
您得到的结果是
“42”
,而不是
“0042”
。我所说的“无意义”实际上是指我宁愿只做
string.Format
,也不愿将其转换回
int
,然后对其进行格式化。@Xaisoft:是的,这是一种低效且笨拙的方法,但没有捷径,因为您已将值转换为字符串。
x.ToString("0000");