使用 string.split 方法并传入 stringsplitoptions.removeemptyentries 选项,可以同时按空格和制表符拆分字符串。只需将 ' ' 和 '\t' 放入字符数组作为分隔符,该方法会自动处理连续分隔符的情况,返回不包含空字符串的片段列表。

Split 如何处理连续的空格和制表符混合输入
当输入字符串中包含连续的空格或制表符时,StringSplitOptions.RemoveEmptyEntries 会跳过这些位置,不会生成空的子字符串。例如,输入 "hello world\ttest" 会被拆分为三个部分:"hello"、"world" 和 "test"。这种机制确保了即使分隔符数量不确定,结果依然干净。

using System;
public class Program
{
public static void Main()
{
string input = "hello world\ttest\t\tend";
char[] separators = new char[] { ' ', '\t' };
string[] result = input.Split(separators, StringSplitOptions.RemoveEmptyEntries);
foreach (string part in result)
{
Console.WriteLine(part);
}
}
}
预期输出为:
hello
world
test
end
如何验证拆分后的每个元素是否去除了空白
可以通过遍历拆分结果并检查每个元素的长度或内容来验证。如果某个元素包含不可见的空白字符,说明拆分逻辑未生效或输入数据异常。在实际开发中,通常结合 Array.ForEach 或 LINQ 进行后续处理,确保数据清洗彻底。
using System;
using System.Linq;
public class Program
{
public static void Main()
{
string input = "a\tb c\t d";
char[] separators = new char[] { ' ', '\t' };
var parts = input.Split(separators, StringSplitOptions.RemoveEmptyEntries);
bool allClean = parts.All(p => !p.Contains(' ') && !p.Contains('\t'));
Console.WriteLine($"All clean: {allClean}");
Console.WriteLine($"Count: {parts.Length}");
}
}
预期输出为:
All clean: True
Count: 3
基于输入字符串末尾带有制表符时的具体行为
当输入字符串以制表符或空格结尾时,RemoveEmptyEntries 选项会忽略末尾的分隔符,不会在结果数组中添加一个空字符串。例如,输入 "test\t" 只会返回一个元素 "test",而不是两个元素("test" 和 "")。这避免了常见的索引越界或空引用问题。











