MatchCollection.Item[Int32] 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取该集合的单个成员。
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。
示例
以下示例分析 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异常。 如果匹配操作的超时值有效,并且查找特定匹配项的尝试超过该超时间隔,则可能会引发此异常。