C# 奇怪的是,regex.split方法匹配一个空元素

C# 奇怪的是,regex.split方法匹配一个空元素,c#,.net,regex,split,C#,.net,Regex,Split,expression=“-9a3dcbh-3bca-4ab4cf-3hc”//这是iput字符串 我想把这个字符串分成+或-。 我的VS调试器显示如下子字符串数组: 子字符串[0]=null/???为什么 子字符串[1]=9a3dcbh 子串[2]=3bca 子串[3]=4ab4cf 子串[4]=3hc 为什么arry的第一个元素为null,是因为我匹配+-,而输入字符串中没有+?因为split消除了分隔符,并返回分隔符前后的字符串,在这种情况下,分隔符前没有字符,因此第一个值是空字符串。。第一

expression=“-9a3dcbh-3bca-4ab4cf-3hc”//这是iput字符串 我想把这个字符串分成+或-。 我的VS调试器显示如下子字符串数组: 子字符串[0]=null/???为什么 子字符串[1]=9a3dcbh 子串[2]=3bca 子串[3]=4ab4cf 子串[4]=3hc


为什么arry的第一个元素为null,是因为我匹配+-,而输入字符串中没有+?

因为split消除了分隔符,并返回分隔符前后的字符串,在这种情况下,分隔符前没有字符,因此第一个值是空字符串。

。第一个答案有很好的解释

你可以试试这个:

    Regex rx = new Regex(@"[+-]");
    string[] substrings = rx.Split(expression);

更正,第一个元素不是空的,它是字符串中的“”。Split您可以使用removeMptyEntries选项,但我不相信Regex。Split有这个选项。
     string split_string = "-3243+324-32-2343";
     string[] nums = split_string.Split(new char[] { '-', '+' },
                                        StringSplitOptions.RemoveEmptyEntries);