Replace(" ", "") 報錯?題目說「輸入空格提示不可為空」,實際上 string.Replace(" ", "") 完全合法。可能混淆了 string.IsNullOrEmpty 檢查或參數為 null 的情況。
| 方法 | 代碼 | 特點 |
|---|---|---|
| Replace | s.Replace(" ", "") | 僅移除空格 (U+0020),不含制表符/換行,分配新字符串 |
| Regex | Regex.Replace(s, @"\s+", "") | 移除所有空白字符,編譯正則有開銷,適合複雜模式 |
| StringBuilder | var sb=new StringBuilder(); foreach(c in s) if(!char.IsWhiteSpace(c)) sb.Append(c); | 單次分配,適合大字符串/高頻調用 |
| LINQ | new string(s.Where(c=>!char.IsWhiteSpace(c)).ToArray()) | 可讀性好,分配數組+字符串,性能一般 |
| Span (高性能) | s.AsSpan().Trim() 僅首尾;中間需手寫循環 | 零分配,.NET Core 2.1+,適合極致優化 |
// 僅移除空格
string result = input.Replace(" ", "");
// 移除所有空白字符(含 \t \r \n)
string result = new string(input.Where(c => !char.IsWhiteSpace(c)).ToArray());
// 或
var sb = new StringBuilder(input.Length);
foreach (char c in input) if (!char.IsWhiteSpace(c)) sb.Append(c);
string result = sb.ToString();