string⇔char[]

abc
「abc」の文字数は3です
C#の文字形式
「C#の文字形式」の文字数は7です
「C#の文字形式」の4番目の文字は「文」です

C# の string 型と char 型と char 配列の 説明です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. string(文字列)型と char(文字)型は、主としてコンソールとの入出力に使われる型で、普通計算には使われません。
    string は char の配列のようなものですが、サイズを意識する必要が無いことや、専用のメソッドが使える点が異なります。
  2. Windows(VC++) では "Shift_JIS" が標準コードとして使われていました。
    "Shift_JIS" は、半角文字は1バイトで、日本語のような全角文字は2バイトで表現します。
    最近では標準コードが "Shift_JIS" から Unicode(UTF-16) に変わりつつあり、全て2バイトで表現します。
    詳しい説明は Program Guid を参照して下さい。
    半角文字も全角文字も一文字(2バイト)として処理されていることに注目して下さい。
    次の文字列「C#の文字形式」では「C#」を半角で、後の文字を全角でタイプしています。
    プログラムの実行結果は文字数は7文字で、4番目の文字は「文」になります。
  3. ソースコードです。
    //★ string と char     前田 稔 ★
    using System;
    
    class Prog
    {
        public static void Main()
        {
            char[] chararray = new char[3];
            chararray[0] = 'a';
            chararray[1] = 'b';
            chararray[2] = 'c';
    
            string str;
            str = new string(chararray);
            Console.WriteLine(str);
            int n = str.Length;
            Console.WriteLine("「{0}」の文字数は{1}です", str, n);
    
            char[] title = {'C', '#', 'の', '文', '字', '形', '式'};
            string strTitle = new string(title);
            Console.WriteLine(strTitle);
            n = title.Length;
            Console.WriteLine("「{0}」の文字数は{1}です", strTitle, n);
    
            char c = title[3];
            Console.WriteLine("「{0}」の4番目の文字は「{1}」です", strTitle, c);
            Console.ReadLine();
        }
    }
    

char[] ⇔ string

  1. char 配列と string 間の相互変換のプログラムです。
    文字列処理は string を使うのが一般的ですが、C++ 時代には char 配列を使っていました。
    C# では文字列処理に char 配列を使うことは少ないと思いますが、相互変換の説明です。
  2. ソースコードです。
    //★ char[] ⇔ string       前田 稔 ★
    using System;
    
    class Text
    {
        public static void Main()
        {
            char[]  chr1 = "ABCDefgh".ToCharArray();
            string  str1 = new string(chr1);
            Console.WriteLine(str1);
    
            string  str2 = "IJKLMN前田稔";
            char[]  chr2 = str2.ToCharArray(2,6);
            Console.WriteLine("[{0}] のサイズは{1}です", str2,str2.Length);
            Console.WriteLine(new string(chr2));
    
            Console.ReadLine();
        }
    }
    
  3. ToCharArray() で string から char 配列を生成することが出来ます。
    str2.ToCharArray(2,6); は str2 の「2文字目から6文字」を char 配列に変換します。
    同様に new string(chr1) で char 配列から string を生成することが出来ます。
    実行の結果です。
    C:\DATA\C#\BAT\Prog1>Char_Str
    ABCDefgh
    [IJKLMN前田稔] のサイズは9です
    KLMN前田
    

【演習】

  1. string 形式では Substring() メソッドが使えます。
        string str = "0123456789abcDEFG";
        string str2, str3, str4;
    
        str2 = str;
        str3 = str.Substring(8);
        str4 = str.Substring(10, 5);
        Console.WriteLine("{0}\n{1}\n{2}\n", str2,str3,str4);
        
    プログラムの実行結果です。
    0123456789abcDEFG
    89abcDEFG
    abcDE
    
  2. Substring() を使って文字列を切り出してみて下さい。
  3. string 形式にはインデクサが定義されていて、文字の配列と同じように添え字で特定の文字を参照することができます。
    次の例では ch に '8' が格納されます。
        string str = "0123456789abcdefg";
        char   ch;
    
        ch = str[7];
        
  4. Substring() やインデクサが左辺に使えたら便利なのですが、使えないようです。
    次の書き方はエラーが表示されます。
        str[10] = 'X';                //エラー
        str.Substring(10, 3) = "XYZ"; //エラー
        
  5. 空 string の判定は Empty を使います。
        if (str==string.Empty)
        {
            ・・・
        }    
        
  6. C/C++ でも同様のプログラムを String & char を作成しています。
    Program Guid でストリング関係のページを抜粋しています。

【NOTE】

今までのプログラム(VC++ など)では、半角と全角とでバイト数が異なることが難点でした。 (^_^;)
C#では文字をワイドキャラ(2バイト?)に統一して、プログラミングしやすくなっています。
それに伴いファイルコード(Shift-JIS, EUC など)と内部コード(Unicode)の変換機能が強化されています。

余談ですが Shift-JIS で使われている全角の2バイトコードは実に曲者でした。 (^_^;)
特に全角の2バイト目に \(5C) などの制御コードと同じコードが現れることに常に悩まされて続けてきました。
これでこの問題も解決するのでしょうか。 \(^o^)/
詳細は 前田稔の超初心者のプログラム入門 から 「C言語 Windows/フルパスを調べる」を参照して下さい。

超初心者のプログラム入門(C# Frame Work)