使用 split 方法并指定最大分割数为 2,即可只按第一个分隔符将字符串拆分为两段。例如调用 str.split(new[] { ',' }, 2, stringsplitoptions.none),若字符串包含多个逗号,结果数组长度始终为 2,第一段是首个逗号前的内容,第二段是剩余所有字符。

Split 的第三个参数对结果有什么影响?
第三个参数 StringSplitOptions 决定是否移除空元素。默认值 None 保留空段,而 RemoveEmptyEntries 会跳过因连续分隔符产生的空字符串,但依然受最大分割数限制。在只取前两段时,通常使用 None 以保留原始结构。

如果字符串中没有分隔符,拆分结果是什么?
当输入字符串不包含指定的分隔符时,Split 返回长度为 1 的数组,仅包含原字符串本身。此时不存在第二段,访问索引 1 会引发 IndexOutOfRangeException。因此在使用前应检查数组长度或安全地处理缺失部分。
using System;
class Program
{
static void Main()
{
string input = "key=value;extra";
char delimiter = ';';
// 只按第一个分号拆分
string[] parts = input.Split(new char[] { delimiter }, 2, StringSplitOptions.None);
Console.WriteLine($"Parts count: {parts.Length}");
Console.WriteLine($"Part 0: {parts[0]}");
if (parts.Length > 1)
{
Console.WriteLine($"Part 1: {parts[1]}");
}
else
{
Console.WriteLine("No second part found.");
}
// 测试无分隔符情况
string noDelim = "nodelimiter";
string[] single = noDelim.Split(new char[] { ';' }, 2, StringSplitOptions.None);
Console.WriteLine($"Single part length: {single.Length}");
}
}
上述代码运行后输出:
Parts count: 2
Part 0: key=value
Part 1: extra
Single part length: 1


















