有一个列表可以在运行时添加字符串。 列表中的字符串可以是
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获取此元素的索引。
答案 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()