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
using System.Text.RegularExpressions;
string content = "agcsmallMacsmallgggsmallytx";
string[] result = Regex.Split(content, "small", RegexOptions.IgnoreCase);
// 結果:agc | Mac | ggg | ytx
優勢:支援大小寫忽略、複雜模式、群組捕獲等正則功能。
string str = "我*****是*****一*****個*****教*****師";
str = str.Replace("*****", "*");
string[] parts = str.Split('*');
// 結果:我 | 是 | 一 | 個 | 教 | 師
缺陷:若分隔符號長度不一(如 ** 混雜 *****),會產生空字串:
string str = "我**是*****一*****個*****教*****師";
str = str.Replace("*****", "*");
string[] parts = str.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 編譯開銷