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

C# 字串分割擴充方法:自訂 SplitExt 替代內建 Split

     編輯:C# 入門

.NET 基礎類別庫的 String.Split 功能強大,但在某些特定場景(如需保留空白元素、自訂分隔邏輯)下顯得不夠靈活。本文示範如何撰寫一個字串分割的擴充方法 SplitExt,並對比一般靜態方法的寫法差異。

擴充方法版本:SplitExt

利用 this 關鍵字將方法掛載到 string 型別上,呼叫語法更直觀:

public static string[] SplitExt(this string sourceString, string splitString)
{
    List<string> result = new List<string>();
    string segment = string.Empty;

    while (sourceString.IndexOf(splitString) > -1)
    {
        segment = sourceString.Substring(0, sourceString.IndexOf(splitString));
        sourceString = sourceString.Substring(sourceString.IndexOf(splitString) + splitString.Length);
        result.Add(segment);
    }
    result.Add(sourceString); // 加入最後一段
    return result.ToArray();
}

呼叫範例: string[] parts = "A,B,C".SplitExt(",");

一般靜態方法版本:StringSplitExt

傳統寫法需傳入來源字串與分隔字串兩個參數:

public static string[] StringSplitExt(string sourceString, string splitString)
{
    List<string> result = new List<string>();
    string segment = string.Empty;

    while (sourceString.IndexOf(splitString) > -1)
    {
        segment = sourceString.Substring(0, sourceString.IndexOf(splitString));
        sourceString = sourceString.Substring(sourceString.IndexOf(splitString) + splitString.Length);
        result.Add(segment);
    }
    result.Add(sourceString);
    return result.ToArray();
}

呼叫範例: string[] parts = StringSplitExt("A,B,C", ",");

兩者差異與適用場景

特性擴充方法靜態方法
呼叫語法str.SplitExt(",")StringSplitExt(str, ",")
可讀性更符合物件導向直覺傳統程式設計風格
發現性IntelliSense 自動提示需知晓類別名稱
適用場景字串處理核心邏輯、鏈式呼叫工具類、跨專案共用邏輯

效能與改進建議

上述實作為示範邏輯,實際專案建議:

  • 優先使用內建 String.Split(已高度優化)。
  • 若需自訂分隔邏輯,可考慮 Regex.Split 或 String.Split 多載配合 StringSplitOptions。
  • 大量資料處理時,避免在迴圈中重複呼叫 IndexOf,可改用 StringBuilder 或單次遍歷演算法。

擴充方法讓字串操作更貼近自然語言,適合建立領域特定的工具集,提升團隊開發效率。

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