我想要一個將謂詞拆分IEnumerable
的方法,通過它們的索引將謂詞相對於謂詞分組。例如,它可以在滿足x => MyRegex.Match(x).Success
的項目上拆分List<string>
,其中這些匹配項之間的項目被分組在一起。根據謂詞拆分LINQ查詢
其標誌可能看起來線
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"}
。
你的意思是「group by」以外的東西? – 2012-07-11 17:36:04
「split」是什麼意思?返回兩個列表,一個匹配,一個不匹配? – 2012-07-11 17:36:30
是的 - 它不會根據物品的特徵進行分割,而是基於定位。 – Arithmomaniac 2012-07-11 17:37:34