今天在遇到一個需求的時候,須要一個字符串實現自增。是根據數據庫中一個自增的int類型的值,實現自增的。可是要加上前綴。好比,數據庫中有一個自增的值,爲,2。那麼這個自增的值後面的值就位三、四、五、六、7.....100、10一、102......因此我要得到 的這個字符串就要是"S0001"、"S0002"、"S0003"........"S0100"、"S0101"、"S0102"......數據庫
由於,這個"0"的數量還比較少,最一開始寫的一個方法:spa
public string GetSelfIncrStr() { var shopCode = "S"; var newID = 101; if (newID < 10) { shopCode += $"000{newID}"; } else if (newID < 100) { shopCode += $"00{newID}"; } else if (newID < 1000) { shopCode += $"0{newID}"; } else { shopCode += newID; } return shopCode; }
0的個數少,還能夠這樣寫,若是有十個"0"或者更多的呢?這樣寫就不方便了。設計
幸虧,C#中字符串有一個方法code
public String PadLeft(int totalWidth, char paddingChar);
返回值:blog
返回一個新字符串,該字符串經過填充右對齊此實例中的字符。它們位於左側,具備指定的Unicode字符,具備指定的總長度。字符串
參數:string
totalWidth:結果字符串中的字符數,等於原始字符串的數目,字符加上任何其餘填充字符。class
paddingChar:Unicode填充字符。方法
因此,這個方法就能夠改寫成以下:數據
public string GetSelfIncrStr() { var newID = 101; return "S" + newID.ToString().PadLeft(3, '0'); }
這樣寫起來就方便多了。
還有一個方法:
public String PadRight(int totalWidth);
static string GetStr() { var str = "100"; return str.PadRight(5, '0'); }
這個方法獲得的結果是10000。
其實,這個任務,是根據數據庫中的int類型自增的值,來自增這個字符串的,這個自增的字符串仍是表的主鍵。這個表不是我設計的,我的理解,這種場景仍是儘可能少的有吧,由於這樣的設計並很差。應該從數據庫表的設計和使用場景來設計。
不過這兩個方法仍是蠻好用的。