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
Int32

Match 集合中的索引。

属性值

位于集合中 i 位置的捕获子字符串。

实现

例外

i 小于 0,或者大于或等于 Count

发生超时。

示例

以下示例分析 Nathaniel Hawthorne 的 《七座山体之家》的第 一句,并返回一个 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 像访问数组一样访问集合。

通常,只有在从 Count 属性确定集合中的项MatchCollection总数后,对象中的单个项才由其索引访问。 但是,访问 Count 属性会导致正则表达式引擎使用直接计算一次性生成集合。 这通常比使用 GetEnumerator 方法、C# foreach 语句或 Visual Basic For Each...Next 语句循环访问集合的成本更高。

MatchCollection由于 对象通常是使用延迟计算填充的,因此尝试导航到特定匹配项可能会引发RegexMatchTimeoutException异常。 如果匹配操作的超时值有效,并且查找特定匹配项的尝试超过该超时间隔,则可能会引发此异常。

适用于

另请参阅