这是我的代码:
public static string[] SplitKeepSeparators(this string source, char[] keptSeparators, char[] disposableSeparators = null)
{
if (disposableSeparators == null)
{
disposableSeparators = new char[] { };
}
string separatorsString = string.Join("", keptSeparators.Concat(disposableSeparators));
string[] substrings = Regex.Split(source, @"(?<=[" + separatorsString + "])");
return substrings.Except(disposableSeparators); // error here
}
Run Code Online (Sandbox Code Playgroud)
我得到编译时错误string[] does not contain a definition for 'Except' and the best extension method overload ... has some invalid arguments.
我已经包含using System.Linq在源文件的顶部.
怎么了?
Jon*_*eet 10
你的substrings变量是a string[],但是disposableSeparators是char[]- 并且Except可以处理两个相同类型的序列.
要么disposableSeparators改为a string[],要么使用类似的东西:
return substrings.Except(disposableSeparators.Select(x => x.ToString())
.ToArray();
Run Code Online (Sandbox Code Playgroud)
注意调用ToArray()- Except只返回一个IEnumerable<T>,而声明你的方法返回一个string[].