2

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

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

4 回答 4

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
于 2013-09-12T07:43:51.527 回答
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
}
于 2013-09-12T07:42:13.477 回答
0

你可以做

str.Replace(" ", "");

然后你摆脱空白

并且可以做到

str.IndexOf("3-6");
于 2013-09-12T07:42:15.007 回答
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()
于 2013-09-12T09:14:34.293 回答