首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 字符串去除空格:Replace 陷阱與高效實現方案對比

     編輯:程式設計綜合問答

為什麼 Replace(" ", "") 報錯?

題目說「輸入空格提示不可為空」,實際上 string.Replace(" ", "") 完全合法。可能混淆了 string.IsNullOrEmpty 檢查或參數為 null 的情況。

多種去空格方案性能對比

方法代碼特點
Replaces.Replace(" ", "")僅移除空格 (U+0020),不含制表符/換行,分配新字符串
RegexRegex.Replace(s, @"\s+", "")移除所有空白字符,編譯正則有開銷,適合複雜模式
StringBuildervar sb=new StringBuilder(); foreach(c in s) if(!char.IsWhiteSpace(c)) sb.Append(c);單次分配,適合大字符串/高頻調用
LINQnew 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();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved