MatchCollection.Item[Int32] Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает отдельный член коллекции.
public:
virtual property System::Text::RegularExpressions::Match ^ default[int] { System::Text::RegularExpressions::Match ^ get(int i); };
public virtual System.Text.RegularExpressions.Match this[int i] { get; }
member this.Item(int) : System.Text.RegularExpressions.Match
Default Public Overridable ReadOnly Property Item(i As Integer) As Match
Параметры
Значение свойства
Записанная подстрока в позиции i
в коллекции.
Реализации
Исключения
Значение параметра i
меньше 0 или больше либо равно Count.
Время ожидания истекло.
Примеры
В следующем примере анализируется первое предложение натаниэля Хоторна "Дом семи гейблов " и возвращается MatchCollection объект , содержащий все слова, начинающиеся с прописных или строчных букв "h". Затем Item[] свойство используется для получения каждого слова и отображения его в консоли.
using System;
using System.Text.RegularExpressions;
public class Class1
{
public static void Main()
{
string sentence = "Half-way down a by-street of one of our New England towns, stands a rusty wooden " +
"house, with seven acutely peaked gables, facing towards various points of the compass, " +
"and a huge, clustered chimney in the midst.";
string pattern = @"\b[hH]\w*\b";
MatchCollection matches = Regex.Matches(sentence, pattern);
for (int ctr=0; ctr < matches.Count; ctr++)
{
Console.WriteLine(matches[ctr].Value);
}
}
}
Option Strict On
Imports System.Text.RegularExpressions
Module TestMatches
Public Sub Main()
Dim pattern As String = "\b[hH]\w*\b"
Dim sentence As String
sentence = "Half-way down a by-street of one of our New England towns, stands a rusty wooden " & _
"house, with seven acutely peaked gables, facing towards various points of the compass, " & _
"and a huge, clustered chimney in the midst."
Dim matches As MatchCollection = Regex.Matches(sentence, pattern)
For ctr As Integer = 0 To Matches.Count - 1
Console.WriteLine(matches.Item(ctr).Value)
Next
End Sub
End Module
Пример выводит следующие результаты:
Half
house
huge
Комментарии
В C# свойство является индексатором; Item[] на него явно не ссылаются в коде, но вместо этого можно MatchCollection получить доступ к коллекции, как к массиву.
Как правило, доступ к отдельным элементам в объекте MatchCollection по индексу выполняется только после определения общего количества элементов в коллекции из Count свойства . Однако доступ к свойству Count приводит к тому, что обработчик регулярных выражений будет использовать прямую оценку для сборки коллекции одновременно. Обычно это дороже, чем итерировать коллекцию с помощью GetEnumerator метода , оператора C# foreach
или оператора Visual Basic For Each
...Next
.
MatchCollection Так как объект обычно заполняется с помощью отложенной оценки, попытка перейти к определенному совпадению может вызвать RegexMatchTimeoutException исключение. Это исключение может возникать, если действует время ожидания для операций сопоставления, а попытка найти определенное совпадение превышает этот интервал времени ожидания.