C#怎么进行字符串分割 C# String.Split方法使用详解

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(',', StringSplitOptio

    ns.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.Split(.NET Core 2.1+)提升效率

替代方案:什么时候不该用 Split?

Split 适合规则分隔场景,但遇到复杂需求建议换方式:

  • 需要按固定长度切分 → 用 SubstringSpan.Chunk
  • 分隔逻辑含条件(如“逗号但不在引号内”)→ 用正则表达式 Regex.Split
  • 只取前 N 段或后几段 → 可结合 Take/Skip 或手动遍历,避免全量分割浪费内存

基本上就这些。Split 看似简单,但参数组合和边界情况理清楚,写出来的代码才健壮可靠。