我添加了一个类型的变量,int
我用它来调用类似的东西:
x.ToString("0000");
我改成x
类型string
,现在上面的内容无效。是现在格式化的唯一方法x
:
string.Format("{0:0000}",x);
还是有捷径?
我StringBuilder
用来构建字符串,那么同样适用AppendFormat
吗?
我添加了一个类型的变量,int
我用它来调用类似的东西:
x.ToString("0000");
我改成x
类型string
,现在上面的内容无效。是现在格式化的唯一方法x
:
string.Format("{0:0000}",x);
还是有捷径?
我StringBuilder
用来构建字符串,那么同样适用AppendFormat
吗?
您不能像处理数值一样格式化字符串,因此如果要将数字格式应用于字符串,则必须先将其解析为数字:
Int32.Parse(x).ToString("0000")
没有真正的捷径。
Int32
没有关于 int 应该有多少个前导零的概念。
您通过格式化为字符串来做正确的事情。如果你用它来显示东西,那应该不是问题(x
如果你想执行数字运算,你仍然有问题)。
AppendFormat
像 一样工作string.Format
,但附加到调用它的 StringBuilder 对象。
不幸的是,这是最好的方法。请记住,每种类型都有自己的 ToString 方法,可以被覆盖。int 类型的 ToString 允许您在转换为字符串时传递格式以格式化整数。DateTime 也类似。但是,字符串类型的 ToString 只返回字符串,因为源已经是字符串类型。要格式化字符串,您必须调用 string.Format。
不。
您必须将整数的字符串表示形式转换为实际整数,以便可以使用所需数量的前导零正确格式化它。
如果字符串已经是那种格式,为什么需要重新格式化呢?
MSDN 展示了一些使用说明符的方法:http: //msdn.microsoft.com/en-us/library/fzeeb5cd.aspx#Y759
例子
x.ToString("G");
此链接列出了所有格式选项:http: //msdn.microsoft.com/en-us/library/dwhawy9k.aspx
x.PadLeft(4, '0');
将提供与
x.ToString("0000");
前提x
是它仍然是一个数字(它是一个string
,所以如果不至少 -TryCast()
将它返回,就无法确定这一点。
使用字符串插值(从 C# 6 开始)。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
{<interpolationExpression>[,<alignment>][:<formatString>]}
以你的例子:
$"{x:0000}"