C# 分割字符串
最后修改于 2025 年 4 月 20 日
本教程探讨如何在 C# 中使用 String.Split 和 Regex.Split 方法分割字符串,并提供各种场景的实际示例。
字符串分割概述
String.Split 方法基于指定的分隔符(例如字符或字符串)将字符串分割成子字符串数组。对于更复杂的模式,Regex.Split 使用正则表达式来定义分割标准。
Split(Char[], Int32, StringSplitOptions) Split(Char, Int32, StringSplitOptions) Split(String[], Int32, StringSplitOptions) Split(String[], StringSplitOptions) Split(String, Int32, StringSplitOptions) Split(Char[], StringSplitOptions) Split(Char[], Int32) Split(Char, StringSplitOptions) Split(String, StringSplitOptions) Split(Char[])
String.Split
提供了十个重载来处理不同的分隔符类型、计数和选项,例如删除空条目。
Split(String, String, RegexOptions, TimeSpan) Split(String, String, RegexOptions) Split(String, Int32, Int32) Split(String, Int32) Split(String) Split(String, String)
Regex.Split
提供了七个重载,可以基于正则表达式模式进行分割,并提供大小写敏感和超时选项。
按单个字符分割字符串
此示例演示了 String.Split 的基本用法,即使用空格分隔符将句子分割成单词。
string text = "There is an old hawk in the sky"; string[] words = text.Split(' '); Array.ForEach(words, Console.WriteLine);
该程序通过空格字符将句子分割成单词,从而创建一个子字符串数组。Array.ForEach 方法在新行上打印每个单词。
这种简单的方法非常适合解析具有一致分隔符的文本,例如句子中以空格分隔的单词。输出单独列出每个单词,演示了分割操作。
$ dotnet run There is an old hawk in the sky
省略空条目
此示例使用 StringSplitOptions.RemoveEmptyEntries
在分割具有多个空格的字符串时排除空子字符串。
string text = "There is an old hawk in the sky"; string[] words = text.Split(' ', StringSplitOptions.RemoveEmptyEntries); Array.ForEach(words, Console.WriteLine);
文本包含多个连续空格,这可能会在结果数组中产生空条目。通过使用 StringSplitOptions.RemoveEmptyEntries,该程序确保仅包含非空子字符串。
此技术对于清理具有不一致间距的文本数据(例如用户输入或日志文件)非常有用。输出仅显示实际单词,省略了空条目。
$ dotnet run There is an old hawk in the sky
按多个字符分割
此示例使用多个分隔符字符分割字符串,展示了 String.Split 处理各种分隔符的能力。
string text = "falcon;eagle,forest,sky;cloud,water,rock;wind"; string[] words = text.Split([',', ';']); Array.ForEach(words, Console.WriteLine);
该程序分割包含由逗号和分号分隔的单词的字符串。Split
方法接受一个字符数组作为分隔符,并在遇到任一字符时分割字符串。
此方法对于解析具有多个分隔符的数据(例如具有混合分隔符的 CSV 文件)非常有用。输出列出每个单词,展示了成功地按两个分隔符进行分割。
$ dotnet run falcon eagle forest sky cloud water rock wind
限制子字符串的数量
此示例使用重载方法中的 count 参数来限制 String.Split 生成的子字符串的数量。
string text = "falcon,eagle,forest,sky,cloud,water,rock,wind"; string[] words = text.Split(',', 4); Array.ForEach(words, Console.WriteLine);
该程序将逗号分隔的字符串分割成最多四个子字符串。Split 方法在达到指定的计数后停止分割,并将剩余文本保留为单个子字符串。
此技术对于从结构化数据中提取固定数量的字段(例如 CSV 行的前几列)非常有用。输出显示前三个单词作为单独的子字符串,其余的合并到第四个子字符串中。
$ dotnet run falcon eagle forest sky,cloud,water,rock,wind
按字符串分隔符分割
此示例使用 String.Split 基于字符串分隔符(而不是单个字符)分割字符串。
string text = "hawkxxowlxxvulturexxeagle"; string[] birds = text.Split("xx"); Array.ForEach(birds, Console.WriteLine);
该程序使用 "xx" 作为分隔符分割字符串,从而生成一个鸟类名称数组。接受字符串分隔符的 Split 重载启用了此功能。
此方法非常适合解析具有多字符分隔符的文本,例如日志条目或自定义格式的数据。输出列出每个鸟类名称,确认成功分割。
$ dotnet run hawk owl vulture eagle
使用 Regex.Split 分割
此示例使用 Regex.Split 基于正则表达式模式分割字符串,从而处理复杂的分隔符场景。
using System.Text.RegularExpressions; string text = "There are\t\t many clouds in the \n sky."; Regex rx = new Regex(@"\s+", RegexOptions.Compiled); string[] data = rx.Split(text); Array.ForEach(data, Console.WriteLine);
该程序使用正则表达式 (\s+) 分割包含制表符、多个空格和换行符的字符串,该表达式匹配一个或多个空格字符。RegexOptions.Compiled 标志提高了重复使用的性能。
Regex.Split 对于处理不规则分隔符(例如文本文件中变化的空格)非常强大。输出列出非空子字符串,显示了通过模式进行的有效分割。有关更多详细信息,请参阅 C# 正则表达式教程。
$ dotnet run There are many clouds in the sky.
连接分割的字符串
此示例演示了 String.Join,它通过使用指定的分隔符连接字符串数组来补充分割操作。
List<string> words = ["falcon", "wood", "sky", "water"]; string text = string.Join(",", words); Console.WriteLine(text);
该程序使用逗号作为分隔符将单词列表连接成单个字符串。String.Join 是 String.Split 的逆运算,将元素组合成统一的字符串。
此方法对于格式化数据(例如创建 CSV 字符串或显示列表)非常有用。输出显示由逗号连接的单词,说明了分割过程的逆过程。
$ dotnet run falcon,wood,sky,water
来源
在本文中,我们探讨了在 C# 中使用 String.Split 和 Regex.Split 分割字符串的方法。
作者
列出所有 C# 教程。