2013-04-18 60 views
3

我必須寫一個數字的進展,有(每個)5位數。我的代碼是:格式字符串/數字「NNNNN」

int count = 1; 
string labelCount = ""; 
foreach (var directory in folderList) 
{ 
    if (count < 10) 
    { 
     labelCount = "0000" + count.ToString(); 
    } 
    else if (count < 100) 
    { 
     labelCount = "000" + count.ToString(); 
    } 
    else if (count < 1000) 
    { 
     labelCount = "00" + count.ToString(); 
    } 
    else if (count < 10000) 
    { 
     labelCount = "0" + count.ToString(); 
    } 

    count++; 
} 

但它看起來不太好在我看來。有沒有格式化數字的方法(在左邊添加0xN)還是唯一的方法?

回答

7

只要給格式ToString方法

var str = count.ToString("00000"); 
5

看看String.PadLeft

string formatted = count.ToString().PadLeft(6, '0'); 
+1

...但要小心'count'不是負數。 '000-42'真的很醜。 – dtb

+0

在他的代碼數從'1'開始,永遠不會減少,你可以從上下文中推斷出該變量永遠不會是負數。我同意,但一般的建議很好。 –

+0

是的,這是一般意見。 'count.ToString(「00000」)'適用於所有整數,但如上所示'PadLeft'只適用於非負數。 – dtb

-2

您可以通過以下操作實現此目的:

string formatted = count.ToString(); 
for(int i = 0; i < count - 5; i++) 
{ 
    formatted = "0" + formatted; 
} 
labelCount.Text = formatted; 

編輯: Sry,我的錯!應該是:

//.. 
for(int i = 0; i < 5 - count.ToString().Length; i++) 
//.. 
+1

那麼如果count爲10,那麼會添加5個零?如果計數爲100,則添加95個零? –

0

嘗試像下面,它會幫助你...

labelCount = string.Format("{0:00000}", count); 

看到這裏所有的格式:String.Format

0

怎麼會這樣呢?

int count = 1; 
string labelCount = ""; 

foreach (var directory in folderList) 
{ 
    int i = 10000; 
    while (count < i) 
    { 
     labelCount += 0; 
     i /= 10; 
    } 

    labelCount += count.ToString(); 
    count++; 
}