IEnumerable
at を述語で分割し、述語に相対的なインデックスでアイテムをグループ化するメソッドが欲しいです。たとえば、List<string>
を満たす at 項目を分割し、x => MyRegex.Match(x).Success
そのような一致がグループ化された「間にある」項目を使用できます。
その署名は何かの行に見える可能性があります
public static IEnumerable<IEnumerable<TSource>> Split<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate,
int bool count
)
、場合によっては、すべての分割線を含む出力の余分な要素があります。
foreach
これをループよりも効率的かつ/またはコンパクトに実装する方法はありますか? LINQメソッドで実装できるはずだと思いますが、指を置くことはできません。
例:
string[] arr = {"One", "Two", "Three", "Nine", "Four", "Seven", "Five"};
arr.Split(x => x.EndsWith("e"));
以下のいずれかでOKです。
IEnumerable<string> {{}, {"Two"}, {}, {"Four", "Seven"}, {}}
IEnumerable<string> {{"Two"}, {"Four", "Seven"}}
一致を保存するためのオプションの要素は{"One", "Three", "Nine", "Five"}
.