MatchCollection.Count 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取匹配项的数目。
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
属性值
匹配项的数目。
实现
例外
示例
下面的示例使用 Count 属性来确定对 Regex.Matches(String, String) 方法的调用是否找到任何匹配项。 如果未找到,则表示未找到匹配项。 否则,它会枚举匹配项并显示其值及其在输入字符串中找到的位置。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\d+";
string[] inputs = { "This sentence contains no numbers.",
"123 What do I see?",
"2468 369 48 5" };
foreach (var input in inputs) {
MatchCollection matches = Regex.Matches(input, pattern);
Console.WriteLine("Input: {0}", input);
if (matches.Count == 0)
Console.WriteLine(" No matches");
else
foreach (Match m in matches)
Console.WriteLine(" {0} at index {1}", m.Value, m.Index);
Console.WriteLine();
}
}
}
// The example displays the following output:
// Input: This sentence contains no numbers.
// No matches
//
// Input: 123 What do I see?
// 123 at index 0
//
// Input: 2468 369 48 5
// 2468 at index 0
// 369 at index 5
// 48 at index 9
// 5 at index 12
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\d+"
Dim inputs() As String = { "This sentence contains no numbers.",
"123 What do I see?",
"2468 369 48 5" }
For Each inputStr In inputs
Dim matches As MatchCollection = Regex.Matches(inputStr, pattern)
Console.WriteLine("Input: {0}", inputStr)
If matches.Count = 0
Console.WriteLine(" No matches")
Else
For Each m As Match In matches
Console.WriteLine(" {0} at index {1}", m.Value, m.Index)
Next
End If
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' Input: This sentence contains no numbers.
' No matches
'
' Input: 123 What do I see?
' 123 at index 0
'
' Input: 2468 369 48 5
' 2468 at index 0
' 369 at index 5
' 48 at index 9
' 5 at index 12
正则表达式模式 \d+
与输入字符串中的一个或多个十进制字符匹配。
注解
通过检索集合Count属性的值来访问对象的单个成员MatchCollection会导致正则表达式引擎使用直接计算填充集合。 ln 对比度,调用GetEnumerator方法 (或使用 foreach
C# 中的语句和 For Each``Next
Visual Basic) ... 语句会导致正则表达式引擎根据需要使用延迟计算填充集合。 直接评估是生成集合比延迟评估更昂贵的方法。
MatchCollection由于对象通常使用延迟求值进行填充,因此在完全填充集合之前尝试确定集合中的元素数可能会引发RegexMatchTimeoutException异常。 如果匹配操作的超时值生效,并且尝试查找单个匹配项超过该超时间隔,则可能会引发此异常。