.NET中的字符串格式:将整数转换为固定宽度字符串?

时间:2011-06-19 00:26:49

标签: .net string string-formatting

我在.NET / C#中有一个int,我想将其转换为特定格式的字符串。

如果值为1,我希望字符串为“001”。

10 =“010”。

116 =“116”。

等...

我正在寻找字符串格式,但到目前为止还没有成功。我的价值也不会超过999。

7 个答案:

答案 0 :(得分:45)

最简单的方法是使用.NET的内置功能:

var r = 10;
var p = r.ToString("000");

无需循环或填充。

答案 1 :(得分:21)

看看PadLeft

前:

int i = 40;

string s = i.ToString().PadLeft(3, '0'); 

s ==“040”

答案 2 :(得分:11)

另一种选择是:

i.ToString("d3")

答案 3 :(得分:6)

我记得看到这样的代码用零填充数字......

int[] nums = new int[] { 1, 10, 116 };

foreach (int i in nums)
{
    Console.WriteLine("{0:000}", i);
}

输出:

001
010
116

答案 4 :(得分:0)

如果我们想在可变长度固定输出的函数中使用它,那么这种方法

public string ToString(int i, int Digits)
{
 return i.ToString(string.Format("D{0}", Digits));
}

运行速度比此快20%

return i.ToString().PadLeft(Digits, '0'); 

但是如果我们还希望将函数与字符串输入(例如十六进制数字)一起使用,则可以使用以下方法:

public string ToString(string value, int Digits)
 {
 int InsDigits= Digits - value.Length;
 return ((InsDigits> 0) ? new String('0', InsDigits) + value : value);
 }

答案 5 :(得分:0)

出于完整性考虑,这种方法也是可行的,我更喜欢这种方法,因为它更清晰,更灵活。

int value = 10;

// 010 
resultString = $"{value:000}";

// The result is: 010 
resultString = $"The result is: {value:000}";

答案 6 :(得分:-3)

每次我需要将字符串附加到字符串的开头以匹配此类条件时,我使用了while循环。像这样:

while (myString.length < 5) myString = "0" + myString;

虽然可能有一种string.format方式来做到这一点,但这对我来说还不错。