GroupCollection.CopyTo 方法

定义

重载

CopyTo(Array, Int32)

将集合的所有元素复制到给定数组中(从给定索引处开始)。

CopyTo(Group[], Int32)

从特定的数组索引开始,将组集合的元素复制到 Group 数组中。

CopyTo(Array, Int32)

将集合的所有元素复制到给定数组中(从给定索引处开始)。

public:
 virtual void CopyTo(Array ^ array, int arrayIndex);
public void CopyTo (Array array, int arrayIndex);
abstract member CopyTo : Array * int -> unit
override this.CopyTo : Array * int -> unit
Public Sub CopyTo (array As Array, arrayIndex As Integer)

参数

array
Array

要将集合复制到其中的数组。

arrayIndex
Int32

目标数组中开始复制的位置。

实现

例外

arraynull

arrayIndexarray 的界限外。

  • 或 -

arrayIndex 以及 Countarray 的界限外。

示例

下面的示例从句子中提取每个单词并将其捕获到捕获组中,然后,该方法 CopyTo 用于将每个匹配项对象中的元素复制到包含所有匹配 GroupCollection 项的捕获组的数组中。 然后,单个捕获的单词会显示到控制台。

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b(\S+?)\b";
      string input = "This sentence is rather short but pointless.";

      MatchCollection matches = Regex.Matches(input, pattern);
      object[] words = new object[matches.Count * 2];
      
      int index = 0;
      foreach (Match match in matches)
      {
         match.Groups.CopyTo(words, index);
         index += 2;
      }
      
      // Display captured groups.
      for (int ctr = 1; ctr <= words.GetUpperBound(0); ctr += 2)
         Console.WriteLine(words[ctr]);
   }
}
// The example displays the following output:
//       This
//       sentence
//       is
//       rather
//       short
//       but
//       pointless
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b(\S+?)\b"
      Dim input As String = "This sentence is rather short but pointless."

      Dim matches As MatchCollection = Regex.Matches(input, pattern)
      Dim words(matches.Count * 2 - 1) As Object
      
      Dim index As Integer = 0
      For Each match As Match In matches
         match.Groups.CopyTo(words, index)
         index += 2
      Next
      ' Display captured groups.
      For ctr As Integer = 1 To words.GetUpperBound(0) Step 2
         Console.WriteLine(words(ctr))
      Next
   End Sub
End Module
' The example displays the following output:
'       This
'       sentence
'       is
'       rather
'       short
'       but
'       pointless

正则表达式的定义如下:

模式 描述
\b 与字边界匹配。
(\S+?) 匹配一个或多个非空白字符。 将它们分配给第一个捕获组。
\b 与字边界匹配。

注解

由于整个集合从给定索引开始复制到数组中,因此目标数组必须至少与集合一样大。

警告

此成员不在可移植类库中。 如果要开发面向可移植类库的应用程序,请改用该方法 GroupCollection.ICollection.CopyTo

适用于

CopyTo(Group[], Int32)

从特定的数组索引开始,将组集合的元素复制到 Group 数组中。

public:
 virtual void CopyTo(cli::array <System::Text::RegularExpressions::Group ^> ^ array, int arrayIndex);
public void CopyTo (System.Text.RegularExpressions.Group[] array, int arrayIndex);
abstract member CopyTo : System.Text.RegularExpressions.Group[] * int -> unit
override this.CopyTo : System.Text.RegularExpressions.Group[] * int -> unit
Public Sub CopyTo (array As Group(), arrayIndex As Integer)

参数

array
Group[]

作为组集合中元素的复制目标位置的一维数组。 该数组的索引必须从零开始。

arrayIndex
Int32

array 中从零开始的索引,从此处开始复制。

实现

例外

array 为 null。

arrayIndex 小于零。

  • 或 -

arrayIndex 大于 array 的长度。

array - arrayIndex 的长度小于组集合计数。

适用于