プログラミングを試してみたい人向けのC#プログラミングチュートリアル

数値から文字列、文字列から数値の変換

POINT
  • 数値から文字列への変換方法
  • 文字列から数値への変換方法
目次

数値から文字列への変換

数値から文字列への変換はToString()を使用します。

サンプルプログラム
class Program
{
    static void Main()
    {
        int i = 12345;
        string s = i.ToString();
        System.Console.WriteLine(s);
        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
12345

サンプルプログラムの実行方法はトップページを参照してください。

書式を指定した変換

ToString()のカッコ内に書式を指定することで、色々な変換をすることができます。

サンプルプログラム
class Program
{
    static void Main()
    {
        double d = 123.456;
        
        // ゼロ埋め
        string s = d.ToString("00000");
        System.Console.WriteLine("00000→"+s);
        s = d.ToString("0000.0000");
        System.Console.WriteLine("0000.0000→"+s);

        // ゼロを省く(少数部は#の数のみ変換対象)
        d = 12.34;
        s = d.ToString("#.#");
        System.Console.WriteLine("#.#→"+s);
        s = d.ToString("###.###");
        System.Console.WriteLine("###.###→"+s);

        // 桁区切り
        d = 123456789.12345;
        s = d.ToString("#,0");
        System.Console.WriteLine("#,0→"+s);
        s = d.ToString("#,0.0#");
        System.Console.WriteLine("#,0.0#→"+s);

        // 固定文字(通常文字はそのまま記載、特殊文字を扱う場合はエスケープ文字"\"を付ける)
        d = 123;
        s = d.ToString("#0個");
        System.Console.WriteLine("#0個→"+s);
        // ただし別途文字を付加した方がわかりやすい
        s = d.ToString("#0")+"個";
        System.Console.WriteLine("#0+個→"+s);
        
        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
00000→00123
0000.0000→0123.4560
#.#→12.3
###.###→12.34
#,0→123,456,789
#,0.0#→123,456,789.12
#0個→123個
#0+個→123個

文字列から数値への変換

文字列から数値への変換は、数値型.Parse(文字列)の形式で行います。

サンプルプログラム
class Program
{
    static void Main()
    {
        // 整数の変換
        string s = "1234";
        int i = int.Parse(s);
        System.Console.WriteLine(i);
        
        // 少数の変換
        s = "1234.5678";
        double d = double.Parse(s);
        System.Console.WriteLine(d);

        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
1234
1234.5678

ただし、変換できない値が入っている場合、エラーが発生します。

サンプルプログラム
class Program
{
    static void Main()
    {
        string s = "あいうえお";
        int d = int.Parse(s);
        System.Console.WriteLine(d);

        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
ハンドルされていない例外: System.FormatException: 入力文字列の形式が正しくありません。
   場所 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   場所 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   場所 Program.Main()

エラーを防ぐにはTryParseを使用します。

数値の変換チェック

数値に変換できるかをチェックするTryParseは、下記のように使用します。

サンプルプログラム
class Program
{
    static void Main()
    {
        int i;
        
        string s = "あいうえお";
        if (int.TryParse(s, out i))
        {
            System.Console.WriteLine(i);
        } else {
            System.Console.WriteLine(s+" は変換できない値です");
        }

        s = "1234";
        if (int.TryParse(s, out i))
        {
            System.Console.WriteLine(i);
        } else {
            System.Console.WriteLine(s+" は変換できない値です");
        }

        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
あいうえお は変換できない値です
1234

TryParseはカッコ内にカンマ区切りで変換対象の文字列と変換後に値を入れる変数を指定します。
変換後の値を入れる変数名の前にはoutを記載します。
outは「値を受け取る用の変数を指定しますよ」という意味になります。

TryParseが返すのは、trueかfalseの論理型になります。
サンプルプログラムでは、if文を使用してtrueの場合とfalseの場合に処理を分けています。
trueの場合は、変換結果を表示します。
falseの場合は、変換できない値である旨のメッセージを表示します。
このようにTryParseを使用すれば、変換結果によって処理を分けることができます。