首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# Split 方法進階用法:限制分割筆數提取欄位

     編輯:關於C語言

情境

資料庫欄位內容以空白分隔(至少 3 個空白),需求:第 1 段給 A、第 2 段給 B、其餘全給 C。


string E = "AA BB CC DD EE FF GG";
string[] parts = E.Split(new[] {' '}, 3, StringSplitOptions.RemoveEmptyEntries);
// parts[0] = "AA"
// parts[1] = "BB"
// parts[2] = "CC DD EE FF GG"

關鍵參數解析


public string[] Split(char[] separator, int count, StringSplitOptions options)
  • separator:分隔字元陣列(此處 new[] {' '})。
  • count:最大回傳陣列長度。若實際分割段數超過 count,最後一個元素將包含「剩餘未分割的完整字串」。
  • options:RemoveEmptyEntries 移除空白項目(連續空白不產生空字串)。

完整範例


string E = " AA BB CC DD EE FF GG ";
string[] S = E.Split(new[] {' '}, 3, StringSplitOptions.RemoveEmptyEntries);

string A = S[0]; // "AA"
string B = S[1]; // "BB"
string C = S[2]; // "CC DD EE FF GG"

Console.WriteLine($"A={A}, B={B}, C={C}");

避坑指南

  1. 若不加 RemoveEmptyEntries,前導/尾隨/連續空白會產生空字串元素,導致索引偏移。
  2. count 參數為最大值,實際回傳陣列長度可能小於 count(如字串本身段數不足)。
  3. .NET 5+ 可簡寫:E.Split(' ', 3, StringSplitOptions.RemoveEmptyEntries)。

替代方案

  • String.Split 固定分隔字元,若分隔規則複雜(如多空白、Tab、逗號混雜),改用 Regex.Split。
  • 需高效能解析大量資料:考慮 Span<T> 手寫解析器避免配置陣列。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved