【发布时间】:2011-06-19 00:26:49
【问题描述】:
我在 .NET/C# 中有一个 int,我想将其转换为特定格式的字符串。
如果值为 1,我希望字符串为“001”。
10 = "010"。
116 = "116"。
等等……
我正在研究字符串格式,但到目前为止没有成功。我也不会有超过 999 的值。
【问题讨论】:
标签: .net string string-formatting
我在 .NET/C# 中有一个 int,我想将其转换为特定格式的字符串。
如果值为 1,我希望字符串为“001”。
10 = "010"。
116 = "116"。
等等……
我正在研究字符串格式,但到目前为止没有成功。我也不会有超过 999 的值。
【问题讨论】:
标签: .net string string-formatting
最简单的方法是为此使用 .NET 的内置功能:
var r = 10;
var p = r.ToString("000");
无需循环或填充。
【讨论】:
【讨论】:
另一种选择是:
i.ToString("d3")
【讨论】:
Dim thisDate As Date Dim thisMonth As Integer thisDate = Date.Today thisMonth = Month(thisDate) thisMonth.ToString("00") = 我的“2”而不是“02”。
我记得看到这样的代码用零填充数字...
int[] nums = new int[] { 1, 10, 116 };
foreach (int i in nums)
{
Console.WriteLine("{0:000}", i);
}
输出:
001
010
116
【讨论】:
为了完整起见,这种方式也是可以的,我更喜欢它,因为它更清晰,更灵活。
int value = 10;
// 010
resultString = $"{value:000}";
// The result is: 010
resultString = $"The result is: {value:000}";
【讨论】:
如果我们想在一个可变固定长度输出的函数中使用它,那么这个方法
public string ToString(int i, int Digits)
{
return i.ToString(string.Format("D{0}", Digits));
}
运行速度比这快 20%
return i.ToString().PadLeft(Digits, '0');
但如果我们还想使用带有字符串输入(例如 HEX 数字)的函数,我们可以使用这种方法:
public string ToString(string value, int Digits)
{
int InsDigits= Digits - value.Length;
return ((InsDigits> 0) ? new String('0', InsDigits) + value : value);
}
【讨论】:
每次我需要将内容附加到字符串的开头以匹配这样的条件时,我都使用了一个 while 循环。像这样:
while (myString.length < 5) myString = "0" + myString;
虽然可能有一种 string.format 方法可以做到这一点,但这对我来说之前效果很好。
【讨论】: