GroupCollection.CopyTo Method
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Copies all the elements of the collection to the given array beginning at the given index.
Assembly: System (in System.dll)
Parameters
- array
- Type: System.Array
The array the collection is to be copied into.
- arrayIndex
- Type: System.Int32
The position in the destination array where copying is to begin.
Implements
ICollection.CopyTo(Array, Int32)| Exception | Condition |
|---|---|
| ArgumentNullException | array is null. |
| IndexOutOfRangeException | arrayIndex is outside the bounds of array. -or- arrayIndex plus GroupCollection.Count is outside the bounds of array. |
The following example extracts each word from a sentence and captures it in a capturing group, The CopyTo method is then used to copy the elements in each match's GroupCollection object to an array that contains the capturing groups from all matches. The individual captured words are then displayed.
using System; using System.Text.RegularExpressions; public class Example { public static void Demo(System.Windows.Controls.TextBlock outputBlock) { 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) outputBlock.Text += words[ctr] + "\n"; } } // The example displays the following output: // This // sentence // is // rather // short // but // pointless
The regular expression is defined as follows:
Pattern | Description |
|---|---|
\b | Match a word boundary. |
(\S+?) | Match one or more non-white space characters. Assign them to the first capturing group. |
\b | Match a word boundary. |