固定長度字串(如 "0000000000201402031002"、"0000000000002014020470"),需移除前導的 '0' 字元,保留後續有效數字。截取長度不固定,單純 Substring 難以處理。
TrimStart('0')string s = "0000000000201402031002";
string result = s.TrimStart('0'); // "201402031002"
s = "0000000000002014020470";
result = s.TrimStart('0'); // "2014020470"
| 方法 | 時間複雜度 | 分配次數 | 適用性 |
|---|---|---|---|
TrimStart('0') | O(n) | 1 次新字串 | 最佳:原生優化、語意清晰 |
Regex.Replace("^0+", "") | O(n) + Regex 開銷 | 多次 | 過重、效能差 |
手動迴圈 Substring | O(n) | 1 次 | 可控但程式碼冗長 |
LINQ SkipWhile | O(n) + 列舉器開銷 | 多次 | 不必要複雜 |
// 全零字串
"0000".TrimStart('0'); // 回傳 "" (空字串)
// 空字串
"".TrimStart('0'); // 回傳 ""
// 無前導零
"123".TrimStart('0'); // 回傳 "123"
若業務要求全零時回傳 "0",可補充:
string cleaned = s.TrimStart('0');
if (cleaned.Length == 0) cleaned = "0";
TrimStart 內部使用 Span 就地掃描首個非目標字元索引,再 Slice 建立新字串,無中間分配,極致高效。
TrimStart('0') 是去除字串前導零的標準、最高效、最易讀寫法,無需自行造輪子。