次の方法で共有


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 の境界の外側にあります。

  • または -

arrayIndexCount を加えた値が array の境界の外側にあります。

次の例では、文から各単語を抽出し、キャプチャ グループでキャプチャします。メソッド 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+?) 1 つ以上の空白以外の文字と一致します。 最初のキャプチャ グループに割り当てます。
\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[]

グループ コレクションからコピーされる要素のコピー先となる 1 次元配列。 配列には、0 から始まるインデックスが設定されている必要があります。

arrayIndex
Int32

コピーの開始位置とする array のインデックス (0 から始まる)。

実装

例外

array が null です。

arrayIndex が 0 未満です。

または

arrayIndexarray の長さを超えています。

array - arrayIndex の長さがグループ コレクションの数を下回っています。

適用対象