C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のStringBuilder.CopyTo()メソッドの使い方を徹底解説

C#のStringBuilder.CopyTo()メソッドは、StringBuilderインスタンス内の指定した範囲(セグメント)から、コピー先のChar型配列の指定した位置へ文字をコピーするために使用されるメソッドです。StringBuilderの内容の一部だけを取り出したい場合に便利です。

構文

CopyTo()メソッドの基本的な構文は以下の通りです。

public void CopyTo (int sourceIndex, char[] dest, int destIndex, int count);

パラメータの説明

  • sourceIndex: このインスタンス内で、文字のコピー元となる開始位置
  • dest: 文字のコピー先となるChar型配列
  • destIndex: コピー先の配列内で、文字の書き込みを開始する位置
  • count: コピーする文字数

使用例1

まずは基本的な使用例を見てみましょう。

using System;
using System.Text;

public class Demo {
   public static void Main() {
      StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
      char c = strBuilder[3];
      Console.WriteLine("String = " + strBuilder);
      Console.WriteLine("Character = " + c);
      char[] arr = new char[15];
      strBuilder.CopyTo(3, arr, 2, 6);
      Console.WriteLine("\nCopied String in char array...");
      Console.WriteLine(arr);
   }
}

この例では、StringBuilderの「ghgh78hkjj」という文字列から、インデックス3の位置から6文字分を、配列arrのインデックス2以降にコピーしています。

出力結果

String = ghgh78hkjj
Character = h
Copied String in char array...
h78hkj

使用例2

続いて、初期化済みの配列に対してコピーを行う別の例を見てみましょう。

using System;
using System.Text;

public class Demo {
   public static void Main() {
      StringBuilder strBuilder = new StringBuilder("JohnWick");
      Console.WriteLine("String = " + strBuilder);
      char[] arr = new char[5] {'a', 'b', 'c', 'd', 'e'};
      strBuilder.CopyTo(1, arr, 1, 3);
      Console.WriteLine("\nCopied String in char array...");
      Console.WriteLine(arr);
   }
}

ここでは、「JohnWick」のインデックス1('o')から3文字分("ohn")を、既存の配列{'a', 'b', 'c', 'd', 'e'}のインデックス1以降に上書きコピーしています。その結果、配列は{'a', 'o', 'h', 'n', 'e'}となり、出力は「aohne」になります。

出力結果

String = JohnWick
Copied String in char array...
aohne

注意点

CopyTo()メソッドを使用する際は、以下の点に注意してください。

  • sourceIndexdestIndexcountが負の値の場合、ArgumentOutOfRangeExceptionがスローされます。
  • コピー元・コピー先の範囲がそれぞれの長さを超える場合も例外が発生します。
  • コピー先の配列destがnullの場合、ArgumentNullExceptionがスローされます。

このように、StringBuilder.CopyTo()メソッドを使えば、可変文字列の一部を効率的にChar配列へ抽出できます。部分文字列を文字単位で操作したい場面でぜひ活用してみてください。

  1. C#のSingleOrDefault()メソッドの使い方をわかりやすく解説

    SingleOrDefault()メソッドとはC#のLINQに含まれるSingleOrDefault()メソッドは、シーケンスから単一の特定要素を返すメソッドです。大きな特徴は、要素がシーケンス内に存在しない場合でも例外をスローせず、その型のデフォルト値を返すという点にあります。たとえば参照型の場合は null、数値型の場合は 0 といったデフォルト値が返されるため、空のコレクションを安全に扱いたい場面で非常に便利です。Single()メソッドとの違い似た名前の Single() メソッドは、要素が存在しない場合や複数の要素が見つかった場合に例外(InvalidOperationExcepti

  2. 【C#】String.Join()メソッドで文字列配列を連結する方法

    String.Join()メソッドとはC#のString.Join()メソッドは、文字列配列のすべての要素を1つの文字列に連結するためのメソッドです。各要素の間には、引数で指定した区切り文字(セパレーター)が自動的に挿入されます。たとえば、区切り文字として改行コード「\n」を指定すれば、配列の各要素がそれぞれ別の行に配置された、複数行の文字列を簡単に作成できます。基本的な構文String.Join(\n, starray);第1引数: 要素間に挿入する区切り文字第2引数: 連結対象の文字列配列戻り値: 連結された1つの文字列サンプルコード以下は、5つの文字列要素を持つ配列を改行コードで連結し、