在C#中,我有一个整数值,需要将其转换为字符串,但需要在前面加上零:

例如:

int i = 1;


当我将其转换为字符串时,它需要变为0001

我需要了解C#中的语法。

评论

这可能对您有帮助-如何:使用前导零填充数字。祝你好运

#1 楼

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

评论


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

– Antonio Bakula
13年5月21日在14:58

如何显示固定长度的字符串。 ??

– Mark Macneil Bikeio
2014年11月12日10:34

@Rahul阅读:msdn.microsoft.com/en-us/library/…

–Kevdog777
2015年2月4日14:51在

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

– Arthur Melo
17年6月13日在18:40

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

–詹姆斯·苏格鲁(JamesSugrue)
17年7月17日在3:34

#2 楼

i.ToString("D4");


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

评论


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

– Arthur Melo
17年6月13日在18:40

#3 楼

这是一个很好的例子:

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


#4 楼

您可以使用:

int x = 1;
x.ToString("0000");


评论


使用相同格式字符串的第二种方法:string.Format(“ {0:0000}”,x)

–约旦·陶伯(Yodan Tauber)
2010-12-01 14:25

#5 楼

C#6.0样式字符串插值

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


评论


这个看起来很好。避免$“文本后出现一些文本{x.ToString(” D4“)}的好方法

–布鲁诺·密克隆(Bruno Miquelon)
19年6月21日在15:54

#6 楼

i.ToString("0000");


#7 楼

轻松自在

int i = 1;
i.ToString("0###")


评论


不知道您为什么不赞成投票,并且可以回答操作问题

–maeneak
19年3月2日在12:03

#8 楼

只需

int i=123;
string paddedI = i.ToString("D4");


评论


也增加了复杂性。

–朱利奥·卡钦(Giulio Caccin)
2013年9月5日在9:16

固定为负数。

–cahit beyaz
17年11月1日在8:52

修正了复杂性

–cahit beyaz
18年7月8日在17:26

#9 楼

.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)
19/12/18在11:45



#10 楼

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);


#11 楼

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


#12 楼

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

下面是完成此操作的代码:

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001


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

评论


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

– saktiprasad swain
17年6月21日在7:39



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

– saktiprasad swain
17年6月21日在7:40

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

–安全猎犬
17年7月16日在14:20



投票实际上是匿名的。由于语法不佳,发表了不赞成票。如果您接受了修改提案,本该进行投票的

–安全猎犬
17年7月16日在16:16



有关编辑的讨论

– Muqo
17年7月28日在10:42



#13 楼

填充int i使其与int x的字符串长度匹配时,两者都可以为负:

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


评论


不必要的混淆,尤其是当有一个非常简单的解决方案时。

–焦耳
18年5月29日在22:42