今天在遇到一個需求的時候,需要一個字串實作自增,是根據資料庫中一個自增的int型別的值,實作自增的,但是要加上前綴,比如,資料庫中有一個自增的值,為,2,那么這個自增的值后面的值就位3、4、5、6、7.....100、101、102......所以我要獲得 的這個字串就要是"S0001"、"S0002"、"S0003"........"S0100"、"S0101"、"S0102"......
因為,這個"0"的數量還比較少,最一開始寫的一個方法:
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"或者更多的呢?這樣寫就不方便了,其實這個也可以用設計模式中的責任鏈模式來寫的,不過當0的個數多了,也不好寫,設計模式用來搞這個,有點浪費呀!
幸好,C#中字串有一個方法
public String PadLeft(int totalWidth, char paddingChar);
回傳值:
回傳一個新字串,該字串通過填充右對齊此實體中的字符,它們位于左側,具有指定的Unicode字符,具有指定的總長度,
引數:
totalWidth:結果字串中的字符數,等于原始字串的數目,字符加上任何其他填充字符,
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型別自增的值,來自增這個字串的,這個自增的字串還是表的主鍵,這個表不是我設計的,個人理解,這種場景還是盡量少的有吧,因為這樣的設計并不好,應該從資料庫表的設計和使用場景來設計,
不過這兩個方法還是蠻好用的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/105791.html
標籤:C#
上一篇:c#微信公眾號開發一----基本設定,服務器配置token驗證,獲取timestamp/nonce/signature
