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