2

我添加了一个类型的变量,int我用它来调用类似的东西:

x.ToString("0000");

我改成x类型string,现在上面的内容无效。是现在格式化的唯一方法x

string.Format("{0:0000}",x);

还是有捷径?

StringBuilder用来构建字符串,那么同样适用AppendFormat吗?

4

7 回答 7

3

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

Int32.Parse(x).ToString("0000")
于 2012-10-26T13:35:39.037 回答
1

没有真正的捷径。

Int32没有关于 int 应该有多少个前导零的概念。

您通过格式化为字符串来做正确的事情。如果你用它来显示东西,那应该不是问题(x如果你想执行数字运算,你仍然有问题)。

AppendFormat像 一样工作string.Format,但附加到调用它的 StringBuilder 对象。

于 2012-10-26T13:36:09.603 回答
1

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

于 2012-10-26T13:36:54.420 回答
0

不。

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

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

于 2012-10-26T13:35:37.473 回答
0

MSDN 展示了一些使用说明符的方法:http: //msdn.microsoft.com/en-us/library/fzeeb5cd.aspx#Y759

例子

x.ToString("G");

此链接列出了所有格式选项:http: //msdn.microsoft.com/en-us/library/dwhawy9k.aspx

于 2012-10-26T13:37:32.080 回答
0
x.PadLeft(4, '0'); 

将提供与

x.ToString("0000"); 

前提x是它仍然是一个数字(它是一个string,所以如果不至少 -TryCast()将它返回,就无法确定这一点。

于 2012-10-26T13:40:47.263 回答
0

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

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

{<interpolationExpression>[,<alignment>][:<formatString>]}

以你的例子:

$"{x:0000}"

于 2021-03-17T15:55:12.190 回答