ChatGPT解决这个技术问题 Extra ChatGPT

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

在 C# 中,我有一个整数值需要转换为字符串,但它需要在之前添加零:

例如:

int i = 1;

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

我需要知道 C# 中的语法。

这可能会对您有所帮助 - How to: Pad a Number with Leading Zeros。祝你好运

J
Jay

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"
如何显示固定长度的字符串。 ??
这种方式对我有用 String.Format("{0:D4}", number);
使用字符串格式快捷方式也可以,例如 $"{i:D4}";
R
Ryan
i.ToString("D4");

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


这种方式对我有用 String.Format("{0:D4}", number);
C
Chris Schiffhauer

这是一个很好的例子:

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

Y
Yodan Tauber

您可以使用:

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

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

C# 6.0 风格的字符串插值

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

这个看起来很不错。避免$"some text {x.ToStrig("D4")} after text"的好方法
J
Justin Niessner
i.ToString("0000");

m
maeneak

十分简单

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

不知道你为什么投反对票它有效并回答了操作问题
如果你为'#'添加一个解释会更好。
c
cahit beyaz

简单地

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

固定为负数。
修复复杂性
P
Paul Roub

.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"  

如果您有固定长度的字符串且数字会发生变化,则此方法有效。谢谢你! :)
诠释 i = 1002;字符串 str = i.ToString().PadLeft(4, '0'); // 返回“1002” :)
s
serge
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

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

c
cskwg

大多数给定的答案都很慢或非常慢,或者不适用于负数。

试试这个:

}
    //
    //
    ///<summary>Format a value with a fixed number of digits.</summary>
    public static string Pad( this long v, int digits ) {
        int negative = 0;
        if ( v < 0 ) {
            negative = 1;
            v = Math.Abs( v );
        }
        var source = v.ToString();
        var length = source.Length;
        int max = length;
        if ( max < digits ) {
            max = digits;
        }
        max += negative;
        var ca = new char[ max ];
        for ( int i = 0; i < max; i++ ) {
            ca[ i ] = '0';
        }
        while ( length > 0 ) {
            ca[ --max ] = source[ --length ];
        }
        if ( 0 != negative ) ca[ 0 ] = '-';
        return new string( ca );
    }

S
Suraj Rao
string hello = "Hello C# Corner.";

string helloHash = hello.PadLeft(5, '#');  

Console.WriteLine(helloHash); 

输出 :-

#####Hello C# Corner.

C
Chris Brandsma

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

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

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

我实现了这个代码来为 PDF 文件生成收款号码。


你为什么只对大写字母或句子结构编辑我的答案。有必要吗?开发人员应该关注代码而不是句子结构
@Unheilig我是stackoverflow的新手。我认为当你编辑我的答案时我的观点会降低。
正如您所指出的,您是该社区的新手并且不熟悉编辑系统,您在社区提出和批准的编辑中没有失去任何分数。所做的编辑实际上显着改善了您的答案
投票实际上是匿名的。由于语法不佳,发出了反对票。如果您接受了编辑提案,会投票赞成
x
xnp

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

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

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