C#将int转换为带有填充零的字符串?


Answers:


706

i.ToString().PadLeft(4, '0')-可以,但不适用于负数
i.ToString("0000");-显式格式
i.ToString("D4");-短格式格式说明符
$"{i:0000}";-字符串插值(C#6.0+)


27
i.ToString()。PadLeft(4,'0')不适用于负数,例如(-5).PadLeft(4,'0')将为“ 00-5”
Antonio Bakula

5
如何显示固定长度的字符串。??
Mark Macneil Bikeio 2014年


2
这种方式对我有用String.Format(“ {0:D4}”,数字);
亚瑟·梅洛

14
也可以使用字符串格式快捷方式,例如$“ {i:D4}”;
JamesSugrue

274
i.ToString("D4");

有关格式说明符,请参见MSDN


4
这种方式对我有用String.Format(“ {0:D4}”,数字);
亚瑟·梅洛

118

这是一个很好的例子:

int number = 1;
//D4 = pad with 0000
string outputValue = String.Format("{0:D4}", number);
Console.WriteLine(outputValue);//Prints 0001
//OR
outputValue = number.ToString().PadLeft(4, '0');
Console.WriteLine(outputValue);//Prints 0001 as well


57

C#6.0样式字符串插值

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";

这个看起来很好。避免的好方法$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin,




2

.NET在String类中有一个简单的功能。只需使用:

.ToString().PadLeft(4, '0')  // that will fill your number with 0 on the left, up to 4 length

int i = 1; 
i.toString().PadLeft(4,'0')  // will return "0001"  

如果您有固定长度的字符串且其数字会更改,则此方法有效。谢谢你!:)
Fen Ignacio

0
int p = 3; // fixed length padding
int n = 55; // number to test

string t = n.ToString("D" + p); // magic     

Console.WriteLine("Hello, world! >> {0}", t);

// outputs: 
// Hello, world! >> 055

0
public static string ToLeadZeros(this int strNum, int num)
{
    var str = strNum.ToString();
    return str.PadLeft(str.Length + num, '0');
}

// var i = 1;
// string num = i.ToLeadZeros(5);

-2

在这里我想用4位数字填充我的电话号码。例如,如果为1,则应显示为0001;如果为11,则应显示为0011。

以下是实现此目的的代码:

reciptno=1; // Pass only integer.

string formatted = string.Format("{0:0000}", reciptno);

TxtRecNo.Text = formatted; // Output=0001

我实现了此代码,以生成PDF文件的收款编号。


1
您为什么只编辑大写字母或句子结构的答案。有必要吗?开发人员应该关注代码而不是句子结构
saktiprasad swain

@Unheilig我是stackoverflow的新手。我认为当您编辑答案时,我的观点会降低。
saktiprasad swain

3
如您所指出的,您是这个社区的新手,也不熟悉编辑系统,您从社区提出和批准的编辑中没有失去任何要点。完成的修改实际上极大地改善了您的答案
安全猎犬(

1
投票实际上是匿名的。由于语法不佳,发表了不赞成票。如果您接受了编辑建议,将会被批准
Security Hound


-5

当两者都可以为负数时,填充int i以匹配字符串的长度int x

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')

2
不必要的混淆,尤其是当有一个非常简单的解决方案时。
Juls
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.