Как я могу поместить Regex.Matches в массив?
У меня есть несколько регулярных совпадений. Как я могу поместить их в массив и называть их каждый отдельно, например ID[0] ID[1]
?
string value = ("{\"ID\":\"([A-Za-z0-9_., ]+)\",");
string ID = Regex.Matches(textt, @value);`
Ответы
Ответ 1
Вы можете сделать это уже, поскольку MatchCollection
имеет int indexer, который позволяет получить доступ к совпадениям по индексу. Это совершенно верно:
MatchCollection matches = Regex.Matches(textt, @value);
Match firstMatch = matches[0];
Но если вы действительно хотите поместить совпадения в массив, вы можете сделать:
Match[] matches = Regex.Matches(textt, @value)
.Cast<Match>()
.ToArray();
Ответ 2
Или эта комбинация из последних 2 может быть немного легче взять... MatchCollection может использоваться как массив напрямую - нет необходимости в вторичном массиве:
string value = ("{\"ID\":\"([A-Za-z0-9_., ]+)\",");
MatchCollection matches = Regex.Matches(textt, @value);
for (int i = 0; i < matches.Count; i++)
{
Response.Write(matches[i].ToString());
}
Ответ 3
другой метод
string value = ("{\"ID\":\"([A-Za-z0-9_., ]+)\",");
MatchCollection match = Regex.Matches(textt, @value);
string[] ID = new string[match.Count];
for (int i = 0; i < match.Length; i++)
{
ID[i] = match[i].Groups[1].Value; // (Index 1 is the first group)
}