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

C# 字串分割完全指南:Split 與 Regex.Split 實戰技巧

     編輯:關於C語言

方法一:單一字元分割

string s = "abcdeabcdeabcde";
string[] parts = s.Split('c');
// 結果:ab | deab | deab | de

方法二:多字元分割(字元陣列)

string s = "abcdeabcdeabcde";
string[] parts = s.Split(new char[] { 'c', 'd', 'e' });
// 結果:ab | ab | ab

方法三:Regex.Split - 字串模式分割

using System.Text.RegularExpressions;

string content = "agcsmallMacsmallgggsmallytx";
string[] result = Regex.Split(content, "small", RegexOptions.IgnoreCase);
// 結果:agc | Mac | ggg | ytx

優勢:支援大小寫忽略、複雜模式、群組捕獲等正則功能。

方法四:Replace + Split 處理固定分隔符號

string str = "我*****是*****一*****個*****教*****師";
str = str.Replace("*****", "*");
string[] parts = str.Split('*');
// 結果:我 | 是 | 一 | 個 | 教 | 師

缺陷:若分隔符號長度不一(如 ** 混雜 *****),會產生空字串:

string str = "我**是*****一*****個*****教*****師";
str = str.Replace("*****", "*");
string[] parts = str.Split('*');
// 結果:我 | (空) | 是 | 一 | 個 | 教 | 師  ← 中間有空值

方法五:Regex.Split 解決不固定長度分隔符

string str = "我**是*****一*****個*****教*****師";
string[] parts = Regex.Split(str, @"\*+");
// 結果:我 | 是 | 一 | 個 | 教 | 師

\*+ 表示「一個或多個星號」,完美處理變長分隔符。

效能與選擇建議

方法適用場景效能功能豐富度
Split(char)單一字元分割最高基礎
Split(char[])多個單一字元分割高基礎
Replace + Split固定多字元分隔符中簡單
Regex.Split複雜/變長/模式分割較低最強

進階技巧:保留分隔符號

// 使用 Regex 群組捕獲保留分隔符
string[] parts = Regex.Split("a,b;c", @"([,;])");
// 結果:a | , | b | ; | c

常見陷阱

  • Split 預設移除空項?否,"a,,b".Split(',') 產生 ["a", "", "b"]。需自行過濾:.Where(s => !string.IsNullOrEmpty(s))
  • 正則特殊字元需轉義:Regex.Escape(".")
  • 大量資料處理優先用 Split,避免 Regex 編譯開銷
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved