在c#.net中的Array.indexof中使用regex来查找元素的索引

时间:2013-09-12 07:37:57

标签: c# .net regex

有一个列表可以在运行时添加字符串。 列表中的字符串可以是

List<string> myList=new List<string>();
  0    7- 9
  1    3 - 6
  2    1 -3
  3    10-12

此处列表中包含的字符串不具有相同的模式。 假设我想找到3 - 6的索引。 所以我使用了表达式

3\s*\-\s*6

现在如何在Array.Indexof方法中使用它,以便我可以从mylist获取此元素的索引。

4 个答案:

答案 0 :(得分:2)

尝试

myList.FindIndex(s => new Regex(@"3\s*\-\s*6").Match(s).Success);

修改: 工作样本:

        List<string> myList = new List<string>
            {
                "7- 9",
                "3 - 6",
                "1 -3",
                "10-12"
            };
        int index = myList.FindIndex(s => new Regex(@"3\s*\-\s*6").Match(s).Success);


        Console.WriteLine(index); // 1

答案 1 :(得分:0)

试试这个:

var match = Regex.Match(String.Join(String.Empty, myList.ToArray()), @"3\s*\-\s*6");

if (match.Success) {
    // match.Index to get the index
    // match.Value to get the value
}

答案 2 :(得分:0)

你可以做到

str.Replace(" ", "");

然后你摆脱了空白

并且可以做到

str.IndexOf("3-6");

答案 3 :(得分:0)

您可以使用LINQ执行相同操作:

var regex = new Regex(@"3\s*\-\s*6");
var index = myList.Select((x, i) => new { x, i })
                  .Where(x => regex.Match(x.x).Success)
                  .Select(x => x.i)
                  .First()