C#中PadLeft,PadRight的用法


今天在遇到一個需求的時候,需要一個字符串實現自增。是根據數據庫中一個自增的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類型自增的值,來自增這個字符串的,這個自增的字符串還是表的主鍵。這個表不是我設計的,個人理解,這種場景還是盡量少的有吧,因為這樣的設計並不好。應該從數據庫表的設計和使用場景來設計。

  不過這兩個方法還是蠻好用的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM