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

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

C#のCopyTo()メソッドは、文字列(stringインスタンス)内の指定した位置から、指定した数の文字をUnicode文字配列(char配列)の指定した位置へコピーするために使用されます。部分文字列を効率的に抽出したい場合や、既存のchar配列の一部を上書きしたい場合などに便利なメソッドです。

構文

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

各パラメータの意味は以下のとおりです。

  • srcIndex − コピー元の文字列内で、コピーを開始する最初の文字のインデックス。
  • dest − 文字のコピー先となるUnicode文字配列(char配列)。
  • destIndex − コピー先の配列内で、コピー操作を開始するインデックス。
  • count − コピー元の文字列からコピーする文字数。

使用例1:基本的なコピー

まずは基本的な使用例を見てみましょう。文字列「JohnAndJacob」のインデックス1から4文字を、char配列の先頭へコピーします。

using System;
public class Demo {
    public static void Main() {
        string str = "JohnAndJacob";
        Console.WriteLine("String = " + str);
        char[] destArr = new char[20];
        str.CopyTo(1, destArr, 0, 4);
        Console.Write(destArr);
    }
}

出力結果

String = JohnAndJacob
ohnA

この例では、srcIndexが「1」なので2番目の文字「o」からコピーが開始され、countが「4」のため「ohnA」の4文字がdestArrの先頭(destIndex = 0)に格納されています。

使用例2:既存の配列内容を上書きするコピー

次に、あらかじめ値が設定されているchar配列に対して、途中の位置から上書きコピーする例を見てみましょう。

using System;
public class Demo {
    public static void Main() {
        string str = "JohnAndJacob";
        Console.WriteLine("String = " + str);
        char[] destArr = new char[20];
        destArr[0] = 'A';
        destArr[1] = 'B';
        destArr[2] = 'C';
        destArr[3] = 'D';
        Console.WriteLine(destArr);
        str.CopyTo(2, destArr, 3, 4);
        Console.Write(destArr);
    }
}

出力結果

このプログラムを実行すると、次のような出力が得られます。

String = JohnAndJacob
ABCD
ABChnAn

この例では、まず配列に「ABCD」が設定されています。その後、CopyTo(2, destArr, 3, 4)により、文字列のインデックス2(3番目の文字「h」)から4文字分「hnAn」が、配列のインデックス3以降へ上書きコピーされます。その結果、「ABC」+「hnAn」となり、出力は「ABChnAn」になります。

注意点

  • パラメータで指定した範囲が文字列の長さや配列のサイズを超える場合、ArgumentOutOfRangeExceptionがスローされます。
  • destIndex + count がコピー先配列のサイズを超えないよう、十分な容量の配列を用意しておく必要があります。
  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つの文字列要素を持つ配列を改行コードで連結し、