2014-02-10 60 views
1

我有正在轉換的字符串,需要四個字符 長。這些值可以在0到4個字符之間的任何地方輸入。 我需要墊零字符串,使所有的ID 4個字符長:如何用前導零填充整數?

輸入需要多少

1 => 0001 
121 => 0121 
0567 => 0567 

到目前爲止,我曾嘗試:

int temCode = 0; 
DataTable dt = objSites.Get_Max_SiteCode(); 
if (dt.Rows.Count > 0) 
{ 
    string siteCode = dt.Rows[0]["SiteCode"].ToString(); 
    string code = siteCode.Substring(siteCode.Length - 4); 
    temCode = Convert.ToInt32(code) + 1; 
    temCode.ToString().PadLeft(4, '0'); // same number is coming here without any pad left. 
} 
+1

它似乎你正在做數據的字符串操作,這可能意味着你做了很多。我應該指出,由於字符串是不可變的,所以每當你改變它就會被拋出並創建新的字符串對象,如果你改變相同的字符串很浪費,這是浪費的。你不妨考慮[StringBuilder](http://msdn.microsoft.com/en-us/library/2839d5h5%28v=vs.110%29.aspx)。如前所述,toString()等是表達式,而不是語句。 –

回答

2

的問題在於以下幾點:

  • .ToString()
  • .PadLeft(...)

所有一個字符串,他們不以任何方式修改您調用該方法的對象。

請注意,你將結果放入一個字符串。一個整數值,沒有填充任何概念,所以整數值0010等同於整數值10

那麼試試這個:

string value = temCode.ToString().PadLeft(4, '0'); 

,或者您可以使用此:

string value = temCode.ToString("d4"); 

或本:

string value = string.Format("{0:0000}", temCode); 
3

你不是任何與PadLeft的結果 - 但你不需要那樣做。你可以只指定在ToString呼叫數位(和格式)數量:

string result = temCode.ToString("d4"); 
0

只使用string.padleft。

如:

int i = 100; 
int length = 4; 

string intString = i.ToString().PadLeft(length, '0'); 
0

當涉及到整數值000001 = 1,那麼您將無法使用前導零爲數值的整數。它需要被存儲爲一個字符串。所以......

var foo = 1; 
var formatted = foo.ToString().PadLeft(5, '0'); 
1

可以格式化你數到您選擇的長度。說code.ToSting("0000")

using System.IO; 
using System; 

class Program 
{ 
    static void Main() 
    { 
     int i =30; 
     String strI = i.ToString("0000"); 
     Console.WriteLine(strI); 
    } 
}