不传分隔符参数时,string.split 默认按空白字符拆分并自动去除空字符串。具体做法是调用无参重载 split(),它内部使用 stringsplitoptions.removeemptyentries 和 stringsplitoptions.trimentries,将连续空格、制表符等视为单一分隔符,并丢弃结果中的空项。

Split 与 Split(new char[0]) 的行为差异是什么
传入空字符数组 new char[0] 时,行为等同于传递 StringSplitOptions.None,即保留所有空字符串且仅按单个字符拆分。这与默认无参调用的“智能清理”行为不同,适用于需要保留原始结构或处理非标准分隔符的场景。

using System;
using System.Linq;
class Program {
static void Main() {
string input = " hello world ";
// 默认行为:按空白拆分,去空
var defaultResult = input.Split();
Console.WriteLine(string.Join("|", defaultResult));
// 传入空数组:保留空串,仅按字符(此处无字符)拆分
var emptyArrayResult = input.Split(new char[0]);
Console.WriteLine(string.Join("|", emptyArrayResult));
// 验证类型
Console.WriteLine(defaultResult.Length); // 2
Console.WriteLine(emptyArrayResult.Length); // 1 (整个字符串)
}
}预期输出:
hello|world
1
2
第一行显示默认拆分结果,第二行显示空数组拆分结果(因无分隔符字符,返回原字符串),第三、四行分别对应长度。
当输入包含连续空白字符时,默认拆分如何处理
默认拆分会将连续空白字符视为一个分隔符,并在结果中不包含任何空字符串项。例如输入 "a b" 会被拆分为 ["a", "b"],而不是 ["a", "", "b"]。

using System;
class Program {
static void Main() {
string input = "a\t\tb c";
var result = input.Split();
foreach (var item in result) {
Console.WriteLine($"[{item}]");
}
}
}预期输出:
[a]
[b]
[c]
程序演示了制表符和多个空格被统一处理为单个分隔符,且无空项产生。


















