2011-03-24 120 views
158

我有一個數字,我需要轉換爲一個字符串。首先我使用這個:如何將數字格式化爲帶前導零的字符串?

Key = i.ToString(); 

但我意識到它正在排序奇怪的順序,所以我需要填充零。我怎麼能這樣做?

+4

[C#將int轉換爲帶填充零的字符串的可能的副本](http://stackoverflow.com/questions/4325267/c-sharp-convert-int-to-string-with-padding-zeros) – nawfal 2015-06-04 07:46:21

回答

229

相當簡單:

Key = i.ToString("D2"); 

D代表 「十進制數」,2用於數字打印的數量。

+4

如果你使用'string.Format(「D2」,value)''你會在輸出中得到'D2'。這不起作用。在這種情況下,我們必須使用「{0:00}」。 – 2015-08-07 07:22:18

+27

您應該使用'string.Format(「{0:D2}」,value)'來代替。只是說'string.Format(「D2」,...)'不會取代任何東西,不管什麼,因爲你沒有佔位符。 – infinitypanda 2015-09-11 19:25:30

+2

@infinitypanda意識到這隻會在'value'是一個整數時才起作用。例如,如果'value'是一個double,那麼它必須是'string.Format(「{0:00}」,value)' – derekantrican 2017-02-23 15:02:00

11

嘗試:

Key = i.ToString("000000"); 

就個人而言,雖然,我會看,如果你不能在整數排序直接,而不是字符串表示。

45

如果你想保持固定的寬度,例如10位數字,像這樣做

Key = i.ToString("0000000000"); 

與儘可能多的數字代替,只要你喜歡。

i = 123然後將導致Key = "0000000123"

23

使用一個更好的例子:

i.ToString("D10") 

Int32.ToString(MSDN)和Standard Numeric Format Strings(MSDN )。

或使用String.PadLeft。例如,

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

將導致0000000321。雖然String.PadLeft不適用於負數。

請參閱String.PadLeft(MSDN)。

+2

如果你試圖將它與負數結合使用,那麼你會猜測這會對你產生影響。 – Mario 2011-03-24 11:32:38

13

通常String.Format(「format」,object)優於object.ToString(「format」)。因此,

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

最好,

Key = i.ToString("000000"); 
+2

你應該說爲什麼 – cja 2014-12-18 16:56:51

+3

是的,因爲@cja問了,爲什麼它更可取?我不反對這個說法,我想知道爲什麼。 – 2015-08-14 14:16:07

32

由於還沒有人提到這一點,如果你使用的是C#版本6或以上(即Visual Studio的2015年),那麼你可以使用string interpolation來簡化你碼。因此,而不是使用string.Format(...),你可以這樣做:

Key = $"{i:D2}"; 
+0

不錯的一個!!!!!!! – KyloRen 2017-09-27 01:33:32

-1
int num=1; 
string number=num.ToString().PadLeft(5, '0') 

輸出=「00001」

2

在這裏,我想我沒有在4位數的限制一樣,如果它是1,應該顯示爲0001,如果它11應該顯示爲0011..BOLOW是代碼。

 reciptno=1;//Pass only integer. 

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

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

我實現了這個代碼來生成Money收據號。

相關問題