C#中字符串分割最常用的是String.Split方法,它按指定分隔符将字符串切分为string[]数组;支持单字符、多字符及字符串分隔符,需注意空项处理、空字符串返回值、大小写敏感性及性能优化等关键细节。

C# 中字符串分割最常用、最直接的方式就是 String.Split 方法。它能把一个字符串按指定的分隔符(字符或字符串)切分成多个子串,返回 string[] 数组。用法简单,但细节不少,掌握关键点才能避免踩坑。
基础用法:按单个字符分割
最常见的是用一个字符作为分隔符,比如逗号、空格、制表符等:
string text = "apple,banana,orange";
string[] fruits = text.Split(',');结果是 {"apple", "banana", "orange"}。注意:Split 默认会保留空项(比如 "a,,b".Split(',') → {"a", "", "b"}),如果想跳过空字符串,得加参数:
-
text.Split(',', StringSplitOptions.RemoveEmptyEntries)—— 忽略空项 -
text.Split(',', StringSplitOptions.None)—— 默认行为,保留空项(可省略)
进阶用法:按多个字符或字符串分割
支持传入字符数组(多个分隔符)或字符串数组(支持多字符分隔符):
- 按多种单字符分割:
"a,b;c:d".Split(',', ';', ':')→{"a", "b", "c", "d"} - 按字符串分割(需传 string[]):
"one||two||three".Split(new string[] { "||" }, StringSplitOptions.None)
⚠️ 注意:用字符串分割时,第二个参数必须是 StringSplitOptions 枚举值,不能省略;而用字符分割时可以省略。
常见陷阱与注意事项
几个容易出错的地方要特别留意:
- 空字符串调用 Split 会返回包含一个空字符串的数组:
"".Split(',') → {""},不是 null 或空数组 - 分隔符连续出现时,是否产生空项取决于 StringSplitOptions 设置
- 区分大小写:Split 本身不处理大小写,如需忽略大小写分割,得先用
ToLower()或正则替代 - 性能考虑:对超长字符串频繁分割,可考虑用
Span(.NET Core 2.1+)提升效率.Split
替代方案:什么时候不该用 Split?
Split 适合规则分隔场景,但遇到复杂需求建议换方式:
- 需要按固定长度切分 → 用
Substring或Span.Chunk - 分隔逻辑含条件(如“逗号但不在引号内”)→ 用正则表达式
Regex.Split - 只取前 N 段或后几段 → 可结合
Take/Skip或手动遍历,避免全量分割浪费内存
基本上就这些。Split 看似简单,但参数组合和边界情况理清楚,写出来的代码才健壮可靠。










