web-dev-qa-db-ja.com

数字を先行ゼロで文字列にフォーマットするにはどうすればよいですか。

文字列に変換する必要がある番号があります。まずこれを使いました。

Key = i.ToString();

しかし、私はそれが奇妙な順序でソートされていることに気付いたので、ゼロで埋め込む必要があります。どうすればいいの?

211
Mandy Weston

かなり単純です。

Key = i.ToString("D2");

Dは "decimal number"を表し、2は印刷する桁数を表します。

309
Mario

String.Formatの使用例については、C#の 文字列フォーマット を参照してください。

実際のところ、 intのフォーマットのより良い例

String.Format("{0:00000}", 15);          // "00015"

または 文字列補間 を使用します。

$"{15:00000}";                           // "00015"
180
Paul

あなたがそれを固定幅、例えば10桁のままにしておきたいならば、これをこのようにしてください

Key = i.ToString("0000000000");

好きなだけ数字に置き換えてください。

i = 123Key = "0000000123"になります。

64

C#バージョン6以降(つまり、Visual Studio 2015)を使用している場合は、まだ誰もこれに言及していないため、 文字列補間 を使用してコードを単純化できます。 string.Format(...)を使う代わりに、こうすることができます。

Key = $"{i:D2}";
55
DavidG

つかいます:

i.ToString("D10")

Int32.ToString (MSDN)、および 標準数値フォーマット文字列 (( MSDN)。

またはString.PadLeftを使用してください。例えば、

int i = 321;
Key = i.ToString().PadLeft(10, '0');

0000000321になります。 String.PadLeftは負の数に対しては機能しません。

String.PadLeft (MSDN)を参照してください。

29
firefox1986

通常、String.Format( "format"、object)がobject.ToString( "format")よりも優先されます。したがって、

String.Format("{0:00000}", 15);  

より好ましい

Key = i.ToString("000000");
15

試してください:

Key = i.ToString("000000");

個人的には、しかし、私はあなたが文字列表現ではなく直接整数でソートすることができないかどうか見るでしょう。

13
Marc Gravell

ここで私はそれが1であるならそれが0001と表示されるべきである11のようにそれが0011と表示するべきであるように4桁で制限することを望む。

        reciptno=1;//Pass only integer.

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

        TxtRecNo.Text = formatted;//Output=0001..

私はMoneyレシート番号を生成するためにこのコードを実装しました。

3
int num=1;
string number=num.ToString().PadLeft(4, '0')

出力= "00001"

編集:PadLeftの金額に合わせて変更

補間文字列の場合:

$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
0
Alan Samet