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
更改为typestring
,现在上述内容无效。是现在格式化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");