在c#net中使用带有linq的正则表达式从数组中查找索引
我有一个数组,其中包含如下元素在c#net中使用带有linq的正则表达式从数组中查找索引,c#,regex,linq,C#,Regex,Linq,我有一个数组,其中包含如下元素 dec.02 Novemeber-2 Oct-6 . . . 现在假设我想找到dec.02的索引 假设一个数组代替了dec.02,那么可能存在dect-02。 所以我想使用linq和正则表达式来查找索引。 日期可以是任何格式 Regex will be (dec|december)\W*02 有人能告诉我们如何使用正则表达式和linq从数组中查找索引吗你在找类似的东西吗 String[] data = new String[] { "dec.02",
dec.02
Novemeber-2
Oct-6
.
.
.
现在假设我想找到dec.02的索引
假设一个数组代替了dec.02,那么可能存在dect-02。
所以我想使用linq和正则表达式来查找索引。
日期可以是任何格式
Regex will be (dec|december)\W*02
有人能告诉我们如何使用正则表达式和linq从数组中查找索引吗你在找类似的东西吗
String[] data = new String[] {
"dec.02",
"Novemeber-2",
"Oct-6",
...
};
// All the indexes
int[] indice = data
.Select((line, index) => new {
line = line,
index = index})
.Where(item => Regex.IsMatch(item.line, "Your regular expression"))
.Select(item => item.index)
.ToArray();
如果您只需要第一个此类索引(-1,如果未找到索引):
如果我正确理解您的问题,这可能是一个解决方案:
Regex regex = new Regex(@"(dec|december)\W*02");
string[] dates = { "dec.02", "Novemeber-2", "Oct-6" };
int i = dates.Length - dates.SkipWhile(s => !regex.IsMatch(s)).Count(); // based-0 index
不,我想要元素的特定索引。上面返回一个数组。@user3138879:在这种情况下,请使用
FirstOrDefault()
而不是ToArray()
,请参见我的编辑。
Regex regex = new Regex(@"(dec|december)\W*02");
string[] dates = { "dec.02", "Novemeber-2", "Oct-6" };
int i = dates.Length - dates.SkipWhile(s => !regex.IsMatch(s)).Count(); // based-0 index