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


246

文字列に変換する必要がある数値があります。最初にこれを使用しました:

Key = i.ToString();

しかし、私はそれが奇妙な順序でソートされていることを理解しているので、ゼロで埋める必要があります。どうすればこれを行うことができますか?


回答:


343

かなりシンプル:

Key = i.ToString("D2");

D2印刷する桁数を表す「10進数」を表します。


7
使用string.Format("D2", value)するD2と、出力が表示されます。これは機能しません。"{0:00}"この場合は使用する必要があります。
v.oddou 2015

42
string.Format("{0:D2}", value)代わりに使用する必要があります。string.Format("D2", ...)プレースホルダーがないので、言うだけでは何も置き換えられません。
インフィニティ

5
@infinitypandaは、これがvalueintの場合にのみ機能することを認識しています。たとえばvalue、がdoubleの場合、次のようになりますstring.Format("{0:00}", value)
derekantrican

「先行数字」について話している場合、答えはi.ToString( "00")になると思います。ここで、「00」は先行ゼロを表します。この量は可能な限り増やすことができます。
デダン


72

10桁など、幅を固定したままにする場合は、次のようにします。

Key = i.ToString("0000000000");

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

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


63

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

Key = $"{i:D2}";

33

使用する:

i.ToString("D10")

Int32.ToString(MSDN)、および標準数値フォーマット文字(MSDN)を参照してください。

またはを使用しますString.PadLeft。例えば、

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

結果はになり0000000321ます。けれどもはString.PadLeft負の数のために動作しないでしょう。

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


4
負の数でそれを使おうとすると、それはあなたを台無しにするでしょうね。
Mario

ありがとう-2つ目を使用しました。「.ToString()」を省略しました-それでも機能します。
サンセットクエスト

14

通常、String.Format( "format"、object)は、object.ToString( "format")よりも望ましいです。したがって、

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

よりも、

Key = i.ToString("000000");

4
はい、@ cjaが尋ねたように、なぜそれが望ましいのですか?そして、私はその主張に反対するのではなく、その理由を知りたいのです。
クリストファーキング

最初の構文は、より正確で、予測可能で、明確に「感じられます」。また、Key = String.Format( "{0:00000}"、15);と記述する方が適切です。これは、Key = i.ToString( "000000");と比較されます。最初の構文では、得られる結果を正確に知っていると確信しています。また、1文字ずれている場合は、何を変更するかを正確に把握しています(つまり、フォーマット文字列です。つまり、私にとっては、感情的な個人的な好み、ほぼもっともらしい1つの理由によって弱くサポートされている;-)それでそれが決定されますか?
Developer63

13

試してください:

Key = i.ToString("000000");

ただし、個人的には、文字列表現ではなく、整数で直接ソートできないかどうかを確認します。



3

ここでは、1の場合は0001と表示されるように、4桁で制限する必要があります。11の場合は0011と表示される必要があります。以下はコードです。

        reciptno=1;//Pass only integer.

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

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

このコードを実装してMoneyレシート番号を生成しました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.