首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# String.PadLeft/PadRight 補零與對齊完整教學

     編輯:關於C#

方法簽名

public string PadLeft(int totalWidth, char paddingChar = ' ');
public string PadRight(int totalWidth, char paddingChar = ' ');
  • totalWidth:結果字串總長度,若原字串長度 ≥ totalWidth 則回傳原字串不變。
  • paddingChar:填充字元,預設空白鍵。

基本範例

string s = "42";

s.PadLeft(6)        // "    42" (左邊補空白,右對齊)
s.PadLeft(6, '0')   // "000042" (左邊補零)
s.PadRight(6, '0')  // "420000" (右邊補零)
s.PadLeft(6, '*')   // "****42" (自訂填充字元)

實務應用場景

1. 數字編碼補零 (員工編號、訂單號、序號)

int id = 7;
string code = id.ToString().PadLeft(6, '0'); // "000007"

foreach (var i in new[] { 1, 23, 456, 7890 })
    Console.WriteLine($"EMP{i.ToString().PadLeft(5, '0')}");
// EMP00001
// EMP00023
// EMP00456
// EMP07890

2. 固定寬度欄位輸出 (報表、Log、匯出文字檔)

var items = new[]
{
    new { Name = "Apple",  Price = 30 },
    new { Name = "Banana", Price = 15 },
    new { Name = "Cherry", Price = 45 }
};

foreach (var item in items)
{
    // 名稱左對齊 10 字元,價格右對齊 8 字元補零
    Console.WriteLine($"{item.Name.PadRight(10)}{item.Price.ToString().PadLeft(8, '0')}");
}
// Apple     00000030
// Banana    00000015
// Cherry    00000045

3. 日期時間元件固定寬度 (檔名、排序鍵)

var now = DateTime.Now;
string fileName = $"{now.Year}{now.Month.ToString().PadLeft(2,'0')}{now.Day.ToString().PadLeft(2,'0')}_" +
                  $"{now.Hour.ToString().PadLeft(2,'0')}{now.Minute.ToString().PadLeft(2,'0')}{now.Second.ToString().PadLeft(2,'0')}.log";
// 20240315_143045.log

// 更簡潔寫法:
string fileName2 = now.ToString("yyyyMMdd_HHmmss") + ".log";

4. 字串置中 (標題橫幅)

string title = "SYSTEM STATUS";
int width = 40;
int leftPad = (width - title.Length) / 2 + title.Length;
string centered = title.PadLeft(leftPad).PadRight(width);
// "            SYSTEM STATUS             "

效能與替代方案

  • PadLeft/PadRight 會配置新字串,高頻呼叫 (如每秒萬次) 可考慮 StringBuilder 或 string.Format / FormattableString。
  • 格式化數字補零更推薦標準格式字串:num.ToString("D6") 相當於 num.ToString().PadLeft(6,'0') 但更語意化且效能略優。

常見錯誤

錯誤寫法問題正確寫法
s.PadLeft(2, "0")第二參數需 char,非 strings.PadLeft(2, '0')
期望原字串被修改字串不可變,方法回傳新字串s = s.PadLeft(6, '0')
totalWidth 小於字串長度直接回傳原字串,不截斷需先 s.Substring(0, width) 再 Pad

參考資源

原文連結:https://www.bianceng.cn/Programming/csharp/201410/45590.htm

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved