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

C#のToCharArray()メソッドとは?構文と使い方をサンプルコードで解説

C#のToCharArray()メソッドは、文字列(このインスタンス)に含まれる文字をUnicode文字配列(char型の配列)へコピーするために使用されます。文字列を1文字ずつ処理したい場合や、文字単位での操作が必要な場面で活躍するメソッドです。

構文

ToCharArray()メソッドには、以下の2つのオーバーロードがあります。

public char[] ToCharArray ();
public char[] ToCharArray (int begnIndex, int len);

引数なしの形式では、文字列全体がそのまま文字配列にコピーされます。一方、引数を指定する形式では、begnIndexが部分文字列の開始位置、lenが部分文字列の長さを表し、指定した範囲の文字だけを配列として取り出すことができます。

例1:文字列全体を文字配列に変換する

まずは、基本的な使い方を確認してみましょう。

using System;
public class Demo {
    public static void Main(String[] args) {
        string str1 = "Notebook";
        string str2 = "Ultrabook";
        char[] arr1 = str1.ToCharArray();
        char[] arr2 = str2.ToCharArray();
        Console.WriteLine("String1 = "+str1);
        Console.WriteLine("String1 ToUpperInvariant = "+str1.ToUpperInvariant());
        Console.WriteLine("String1 Substring from index4 = " + str1.Substring(4, 4));
        Console.Write("Character array...String1 =");
        for (int i = 0; i < arr1.Length; i++)
            Console.Write(" " + arr1[i]);
        Console.WriteLine("\n\nString2 = "+str2);
        Console.WriteLine("String2 ToUpperInvariant = "+str2.ToLowerInvariant());
        Console.WriteLine("String2 Substring from index2 = " + str2.Substring(0, 5));
        Console.Write("Character array...String2 =");
        for (int i = 0; i < arr2.Length; i++)
            Console.Write(" " + arr2[i]);
    }
}

出力結果

String1 = Notebook
String1 ToUpperInvariant = NOTEBOOK
String1 Substring from index4 = book
Character array...String1 = N o t e b o o k
String2 = Ultrabook
String2 ToUpperInvariant = ultrabook
String2 Substring from index2 = Ultra
Character array...String2 = U l t r a b o o k

このように、引数を指定しない場合は「Notebook」や「Ultrabook」といった文字列全体が、1文字ずつ格納されたchar型配列に変換されていることがわかります。

例2:開始位置と長さを指定して変換する

続いて、開始位置と長さを指定して、文字列の一部だけを文字配列に変換する例を見てみましょう。

using System;
public class Demo {
    public static void Main(String[] args) {
        string str1 = "Welcome!";
        string str2 = "Thisisit!";
        char[] arr1 = str1.ToCharArray(3,2);
        char[] arr2 = str2.ToCharArray(2,2);
        Console.WriteLine("String1 = "+str1);
        Console.WriteLine("String1 ToUpperInvariant = "+str1.ToUpperInvariant());
        Console.WriteLine("String1 Substring from index4 = " + str1.Substring(4, 4));
        Console.Write("Character array...String1 =");
        for (int i = 0; i < arr1.Length; i++)
            Console.Write(" " + arr1[i]);
        Console.WriteLine("\n\nString2 = "+str2);
        Console.WriteLine("String2 ToUpperInvariant = "+str2.ToLowerInvariant());
        Console.WriteLine("String2 Substring from index2 = " + str2.Substring(0, 5));
        Console.Write("Character array...String2 =");
        for (int i = 0; i < arr2.Length; i++)
            Console.Write(" " + arr2[i]);
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

String1 = Welcome!
String1 ToUpperInvariant = WELCOME!
String1 Substring from index4 = ome!
Character array...String1 = c o
String2 = Thisisit!
String2 ToUpperInvariant = thisisit!
String2 Substring from index2 = Thisi
Character array...String2 = i s

この例では、「Welcome!」に対してToCharArray(3, 2)を呼び出しているため、インデックス3から2文字分の「c」「o」だけが配列に格納されます。同様に「Thisisit!」に対してはToCharArray(2, 2)により、インデックス2から2文字分の「i」「s」が取得されています。

まとめ

ToCharArray()メソッドを使う際のポイントは以下のとおりです。

  • 引数なしで呼び出すと、文字列全体がchar型配列にコピーされる
  • 開始位置(begnIndex)と長さ(len)を指定すると、部分文字列のみを配列化できる
  • 指定した範囲が文字列の範囲外の場合は、例外(ArgumentOutOfRangeException)が発生するので注意が必要

文字列を1文字ずつ操作したい場合や、特定の範囲だけを抜き出したい場合に、ToCharArray()メソッドは非常に便利です。ぜひ活用してみてください。

  1. C#のConsole.ResetColor()メソッドの使い方を解説

    概要C#のConsole.ResetColor()メソッドは、コンソールの前景色(文字色)と背景色を、既定の配色に戻すために使用されます。プログラム内で一時的に文字色や背景色を変更した後、元の状態へ復元したい場合に非常に便利です。構文ResetColor()メソッドの構文は以下のとおりです。public static void ResetColor ();このメソッドは引数を受け取らず、戻り値もありません。また、staticメソッドであるため、インスタンスを生成することなく、Consoleクラスから直接呼び出すことができます。使用例それでは、C#でConsole.ResetColor()メソッ

  2. C#のConsole.MoveBufferArea()メソッドの使い方を徹底解説

    C#のConsole.MoveBufferArea()メソッドは、コンソールの画面バッファ内にある指定されたソース領域を、指定されたコピー先(ターゲット)領域へ移動するために使用されるメソッドです。コンソールアプリケーションで画面上のテキストを別の位置に移動させたい場合に便利です。構文MoveBufferArea()メソッドの基本的な構文は以下の通りです。public static void MoveBufferArea(int sourceLeft, int sourceTop, int sourceWidth, int sourceHeight, int targetLeft, int t