MatchCollection.Item[Int32] MatchCollection.Item[Int32] MatchCollection.Item[Int32] MatchCollection.Item[Int32] Property

Определение

Получает отдельный член коллекции.Gets an individual member of the collection.

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
Int32 Int32 Int32 Int32

Индекс в коллекции Match.Index into the Match collection.

Значение свойства

Записанная подстрока в позиции i в коллекции.The captured substring at position i in the collection.

Исключения

Значение параметра i меньше 0 или больше либо равно Count.i is less than 0 or greater than or equal to Count.

Примеры

В следующем примере анализируется первое предложение Nathaniel Hawthorne дома из семи Gables и возвращает MatchCollection , содержащий все слова, начинающиеся с либо верхний или нижний регистр «h».The following example parses the first sentence of Nathaniel Hawthorne's House of the Seven Gables and returns a MatchCollection object that contains all words that begin with either an uppercase or lowercase "h". Item[Int32] Свойство затем используется для получения каждого слова и отображения его в консоль.The Item[Int32] property is then used to retrieve each word and display it to the console.

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

Пример выводит следующие результаты:The example produces the following output:

Half  
house  
huge  

Комментарии

В C# Item[Int32] свойство является индексатором; он не указан явно в коде, но вместо этого позволяет MatchCollection доступ, как если бы он был массива к коллекции.In C#, the Item[Int32] property is an indexer; it is not explicitly referenced in code, but instead allows the MatchCollection collection to be accessed as if it were an array.

Как правило, отдельные элементы на MatchCollection объекта осуществляется по индексу, только в том случае, после определения общее число элементов в коллекции из Count свойство.Typically, individual items in the MatchCollection object are accessed by their index only after the total number of items in the collection has been determined from the Count property. Тем не менее, доступ к Count вызывает обработчик регулярных выражений, использовать прямое вычисление для создания коллекции за один раз.However, accessing the Count property causes the regular expression engine to use direct evaluation to build the collection all at once. Это обычно дороже, чем циклически перебирая коллекцию с помощью GetEnumerator метод, C# foreach инструкции или Visual Basic For Each... Next инструкции.This is typically more expensive than iterating the collection using the GetEnumerator method, the C# foreach statement, or the Visual Basic For Each...Next statement.

Так как MatchCollection объект обычно заполняется с помощью отложенного вычисления, могут вызывать попытке перехода к точное соответствие RegexMatchTimeoutException исключение.Because the MatchCollection object is generally populated by using lazy evaluation, trying to navigate to a specific match may throw a RegexMatchTimeoutException exception. Это исключение может быть, если значение времени ожидания для операций сопоставления по сути, а попытка найти точное соответствие превышает заданный интервал времени ожидания.This exception can be thrown if a time-out value for matching operations is in effect, and the attempt to find a specific match exceeds that time-out interval.

Применяется к

Дополнительно