在C#程序开发中,字符串分割是最基础也最常用的字符串操作之一,Split方法作为System.String类提供的核心分割工具,能够快速按照指定分隔符将字符串拆分为字符串数组,适配多种业务场景的处理需求。

Split方法的基础用法
Split最基础的用法是传入单个字符作为分隔符,方法会按照该字符将字符串拆分,返回拆分后的字符串数组。下面的示例演示了按照逗号分割字符串的基础实现:
using System;
class Program
{
static void Main()
{
string originStr = "苹果,香蕉,橙子,葡萄";
// 按照逗号分割字符串
char[] separator = new char[] { ',' };
string[] resultArr = originStr.Split(separator);
Console.WriteLine("分割结果:");
foreach (string item in resultArr)
{
Console.WriteLine(item);
}
}
}
上述代码中,我们定义了包含多个水果名称的原始字符串,使用逗号作为分隔符调用Split方法,最终得到的数组包含四个元素,分别是苹果、香蕉、橙子、葡萄。
使用多个分隔符分割字符串
如果字符串中存在多种不同的分隔符,也可以将多个分隔符组成字符数组传入Split方法,方法会将匹配到任意一个分隔符的位置都作为拆分点。示例如下:
using System;
class Program
{
static void Main()
{
string logStr = "2024-05-01|错误|用户ID:1001,操作失败";
// 同时按照竖线和逗号分割
char[] separators = new char[] { '|', ',' };
string[] logParts = logStr.Split(separators);
Console.WriteLine("日志拆分结果:");
foreach (string part in logParts)
{
Console.WriteLine(part);
}
}
}
运行后得到的数组会包含五个元素,分别是日期、错误、用户ID:1001、操作失败,所有竖线和逗号的位置都被作为拆分点处理了。
去除分割后的空字符串
当原始字符串中存在连续的分隔符,或者字符串开头、结尾有分隔符时,Split方法默认会生成空字符串元素。如果不想保留这些空字符串,可以使用带有StringSplitOptions参数的重载版本,传入StringSplitOptions.RemoveEmptyEntries即可过滤空结果。
using System;
class Program
{
static void Main()
{
string testStr = ",张三,,李四,,王五,";
// 不过滤空字符串的分割结果
string[] arrWithEmpty = testStr.Split(',');
Console.WriteLine("不过滤空字符串的结果数量:" + arrWithEmpty.Length);
// 过滤空字符串的分割结果
string[] arrWithoutEmpty = testStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("过滤空字符串的结果数量:" + arrWithoutEmpty.Length);
Console.WriteLine("过滤后的元素:");
foreach (string name in arrWithoutEmpty)
{
Console.WriteLine(name);
}
}
}
第一个分割结果会包含7个元素,其中多个是空字符串,第二个分割结果只会保留3个有效姓名元素,空字符串全部被过滤掉了。
按照字符串作为分隔符分割
除了按照单个字符分割,Split还支持按照字符串作为分隔符,需要传入字符串数组作为分隔符参数,同时可以指定匹配分隔符时是否忽略大小写。示例如下:
using System;
class Program
{
static void Main()
{
string content = "第一章###第二章###第三章###第四章";
// 按照###字符串分割
string[] chapterArr = content.Split(new string[] { "###" }, StringSplitOptions.None);
Console.WriteLine("章节列表:");
foreach (string chapter in chapterArr)
{
Console.WriteLine(chapter);
}
}
}
该示例会将原始字符串按照###拆分为四个章节名称,输出结果和预期一致。
常见注意事项
- Split方法是字符串实例方法,调用时需要注意原始字符串不能为null,否则会抛出NullReferenceException异常,使用前建议先做非空判断。
- 分隔符数组如果传入空数组或者null,Split会按照空白字符(空格、换行、制表符等)进行分割,这个特性在需要处理不规则空白分隔的场景下很实用。
- 分割后的返回的字符串数组是新的数组,修改数组内的元素不会影响原始字符串的值。
- 如果需要频繁进行大量字符串分割操作,建议提前定义好分隔符数组复用,减少重复创建对象的开销。