給定字符串 a = "1234" 或 a = "1+2+3+4",計算各位數字之和。
string a = "1234";
int sum = a.Where(char.IsDigit).Sum(c => c - '0');
// sum = 10
優點:自動過濾非數字字符(如 "+"),代碼極簡。
string a = "1234";
int sum = 0;
foreach (char c in a)
{
if (char.IsDigit(c))
sum += c - '0';
}
string a = "1+2+3+4";
int sum = a.Split('+') // 分割為 ["1","2","3","4"]
.Select(int.Parse) // 轉為 int
.Sum(); // 求和
using System.Text.RegularExpressions;
string a = "1+2+3+4";
int sum = Regex.Matches(a, @"\d+") // 匹配所有連續數字
.Cast<Match>()
.Sum(m => int.Parse(m.Value));
原回答代碼:
string[] arry = da.Split(','); // 實際應按 '+' 分割
int? sum = 0;
for (int i = 1; i < arry.Length; i++) // 索引應從 0 開始
sum = sum + int.Parse(arry[i]);
int? 可空類型此處無必要| 方法 | 耗時 (ms) | 備註 |
|---|---|---|
| foreach + char.IsDigit | ~15 | 最快,無分配 |
| LINQ Where+Sum | ~25 | 委託開銷略大 |
| Split+Select+Sum | ~120 | 分配數組/字符串 |
| Regex | ~300 | 正則引擎開銷大 |
foreach (c) sum += c - '0'Split + Sum 可讀性最好int.Parse("") 拋異常,先 int.TryParse 或 char.IsDigit 守衛選對工具,讓字符串求和既優雅又高效。