You need to enable JavaScript to run this app. 咨询.NET中string.Split方法相邻分隔符返回空数组元素的原因
优惠活动
大模型
产品
解决方案
定价
更多

咨询.NET中string.Split方法相邻分隔符返回空数组元素的原因

.NET 中 string.Split 方法拆分输出差异说明

参考的官方拆分规则

分隔符参数对应的每一个元素,都会作为独立的分隔字符参与匹配。如果两个分隔符位置相邻,或是分隔符出现在待拆分字符串的开头、结尾位置,那么返回的字符串数组中对应的元素将包含空字符串(Empty)。

两组测试代码的实际运行结果

第一组测试代码

string str = "Hello.. How.. are.. you?";
string[] words = str.Split(new char[] { '.' });
foreach (string s in words)
{
    MessageBox.Show(s);
}

拆分得到的数组元素依次为:Hello、""、How、""、are、""、you?

第二组测试代码

string str = "Hello. How. are. you?";
string[] words = str.Split(new char[] { '.' });
foreach (string s in words)
{
    MessageBox.Show(s);
}

拆分得到的数组元素依次为:Hello、 How、 are、 you?

差异背后的运行逻辑

两组代码调用的是同一版string.Split重载方法,拆分规则完全一致,不存在隐藏的逻辑分支,输出差异完全来自待拆分字符串本身的结构区别:

  • 第一组字符串中存在3处连续相邻的.分隔符:按照规则,每个独立的.都是独立的拆分节点,两个相邻节点之间如果没有任何字符,就会生成空字符串元素。连续两个.的结构在字符串中一共出现3次,因此最终拆分数组里会对应出现3个空字符串元素。
  • 第二组字符串中的.分隔符都是独立分散的,不存在两个.相邻的情况:每个.拆分节点之间的区间都包含有效字符(单词+前置空格),拆分时会完整保留区间内的所有内容,不会触发空字符串的生成条件,因此最终数组中没有空元素,每个拆分段都保留了原本字符串里的前置空格。

补充说明:本次调用的Split方法仅将.作为拆分依据,空格不属于拆分参数范畴,会作为待拆分内容的一部分被完整保留,不会被单独过滤或拆分。


内容的提问来源于stack exchange,提问作者user2111639

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 18:36:06