[C#] 文字列と数値の変換方法

C#で文字列と数値を相互に変換する方法はいくつかあります。

文字列を数値に変換するには、int.Parse()double.Parse()decimal.Parse()などのメソッドを使用します。

これらは文字列が数値形式であることを前提としています。

変換が失敗する可能性がある場合は、int.TryParse()double.TryParse()を使用すると安全です。

逆に、数値を文字列に変換するには、ToString()メソッドを使用します。

これにより、数値型の変数を簡単に文字列に変換できます。

これらの方法を使うことで、C#での文字列と数値の変換が効率的に行えます。

この記事でわかること
  • int.Parse()、double.Parse()、decimal.Parse()を使った文字列から数値への変換方法
  • TryParse()メソッドを用いた安全な変換の実践方法
  • ToString()メソッドやフォーマット指定子を使った数値から文字列への変換方法
  • 変換時のエラーハンドリングの重要性とその実践方法
  • ユーザー入力やファイル、Web APIからのデータ変換の応用例

目次から探す

文字列から数値への変換方法

C#では、文字列を数値に変換する方法がいくつかあります。

ここでは、int.Parse()double.Parse()decimal.Parse()TryParse()メソッド、そしてConvertクラスを使った変換方法について詳しく解説します。

int.Parse()の使い方

int.Parse()メソッドは、文字列を整数型に変換するために使用されます。

以下に基本的な使い方を示します。

using System;
class Program
{
    static void Main()
    {
        string numberString = "123"; // 変換する文字列
        int number = int.Parse(numberString); // 文字列を整数に変換
        Console.WriteLine(number); // 結果を表示
    }
}
出力:
123

このコードでは、文字列"123"を整数123に変換しています。

int.Parse()は、変換が成功しない場合に例外をスローするため、入力が確実に整数であることが分かっている場合に使用します。

double.Parse()の使い方

double.Parse()メソッドは、文字列を倍精度浮動小数点数に変換します。

以下にその例を示します。

using System;
class Program
{
    static void Main()
    {
        string doubleString = "123.45"; // 変換する文字列
        double number = double.Parse(doubleString); // 文字列をdoubleに変換
        Console.WriteLine(number); // 結果を表示
    }
}
出力:
123.45

この例では、文字列"123.45"double型の数値に変換しています。

double.Parse()も、変換が失敗すると例外をスローします。

decimal.Parse()の使い方

decimal.Parse()メソッドは、文字列を高精度の10進数に変換します。

以下にその使用例を示します。

using System;
class Program
{
    static void Main()
    {
        string decimalString = "123.456"; // 変換する文字列
        decimal number = decimal.Parse(decimalString); // 文字列をdecimalに変換
        Console.WriteLine(number); // 結果を表示
    }
}
出力:
123.456

このコードでは、文字列"123.456"decimal型に変換しています。

decimal型は、金融計算などで高精度が必要な場合に使用されます。

TryParse()メソッドの活用

TryParse()メソッドは、文字列を数値に変換する際に、変換が成功したかどうかを確認するために使用されます。

変換が失敗した場合でも例外をスローせず、falseを返します。

int.TryParse()の例

using System;
class Program
{
    static void Main()
    {
        string numberString = "123"; // 変換する文字列
        if (int.TryParse(numberString, out int number)) // 変換を試みる
        {
            Console.WriteLine(number); // 成功した場合の結果を表示
        }
        else
        {
            Console.WriteLine("変換に失敗しました"); // 失敗した場合のメッセージ
        }
    }
}
出力:
123

この例では、int.TryParse()を使用して、変換が成功したかどうかを確認しています。

double.TryParse()の例

using System;
class Program
{
    static void Main()
    {
        string doubleString = "123.45"; // 変換する文字列
        if (double.TryParse(doubleString, out double number)) // 変換を試みる
        {
            Console.WriteLine(number); // 成功した場合の結果を表示
        }
        else
        {
            Console.WriteLine("変換に失敗しました"); // 失敗した場合のメッセージ
        }
    }
}
出力:
123.45

このコードでは、double.TryParse()を使用して、文字列をdouble型に変換しています。

decimal.TryParse()の例

using System;
class Program
{
    static void Main()
    {
        string decimalString = "123.456"; // 変換する文字列
        if (decimal.TryParse(decimalString, out decimal number)) // 変換を試みる
        {
            Console.WriteLine(number); // 成功した場合の結果を表示
        }
        else
        {
            Console.WriteLine("変換に失敗しました"); // 失敗した場合のメッセージ
        }
    }
}
出力:
123.456

この例では、decimal.TryParse()を使用して、文字列をdecimal型に変換しています。

Convertクラスを使った変換

Convertクラスは、さまざまな型の変換をサポートしています。

文字列を数値に変換する際にも使用できます。

using System;
class Program
{
    static void Main()
    {
        string numberString = "123"; // 変換する文字列
        int number = Convert.ToInt32(numberString); // 文字列を整数に変換
        Console.WriteLine(number); // 結果を表示
    }
}
出力:
123

このコードでは、Convert.ToInt32()を使用して、文字列を整数に変換しています。

Convertクラスは、nullや空の文字列を扱う際に便利です。

数値から文字列への変換方法

数値を文字列に変換する方法は、C#でデータを表示したり、ログに記録したりする際に非常に重要です。

ここでは、ToString()メソッド、フォーマット指定子、String.Format()メソッド、そして文字列補間を使った変換方法について解説します。

ToString()メソッドの基本

ToString()メソッドは、数値を文字列に変換する最も基本的な方法です。

以下にその使用例を示します。

using System;
class Program
{
    static void Main()
    {
        int number = 123; // 変換する整数
        string numberString = number.ToString(); // 整数を文字列に変換
        Console.WriteLine(numberString); // 結果を表示
    }
}
出力:
123

このコードでは、整数123を文字列に変換しています。

ToString()メソッドは、すべての数値型で利用可能です。

フォーマット指定子を使った変換

フォーマット指定子を使用することで、数値を特定の形式で文字列に変換できます。

数値フォーマットの種類

スクロールできます
フォーマット指定子説明
C通貨形式
D10進数形式(整数)
E指数形式
F固定小数点形式
N数値形式(カンマ区切り)
Pパーセント形式

カスタムフォーマットの使用例

カスタムフォーマットを使用すると、より柔軟な形式で数値を文字列に変換できます。

using System;
class Program
{
    static void Main()
    {
        double number = 1234.5678; // 変換する数値
        string formattedString = number.ToString("0.00"); // 小数点以下2桁でフォーマット
        Console.WriteLine(formattedString); // 結果を表示
    }
}
出力:
1234.57

この例では、"0.00"というカスタムフォーマットを使用して、小数点以下2桁で数値を文字列に変換しています。

String.Format()メソッドの活用

String.Format()メソッドは、複数の数値を特定のフォーマットで文字列に変換する際に便利です。

using System;
class Program
{
    static void Main()
    {
        int number = 123; // 変換する整数
        double price = 456.78; // 変換する小数
        string result = String.Format("商品番号: {0}, 価格: {1:C}", number, price); // フォーマットを指定して文字列に変換
        Console.WriteLine(result); // 結果を表示
    }
}
出力:
商品番号: 123, 価格: ¥456.78

このコードでは、String.Format()を使用して、整数と小数を特定のフォーマットで文字列に変換しています。

文字列補間を使った変換

文字列補間は、C# 6.0以降で導入された機能で、より直感的に数値を文字列に変換できます。

using System;
class Program
{
    static void Main()
    {
        int number = 123; // 変換する整数
        double price = 456.78; // 変換する小数
        string result = $"商品番号: {number}, 価格: {price:C}"; // 文字列補間を使用して文字列に変換
        Console.WriteLine(result); // 結果を表示
    }
}
出力:
商品番号: 123, 価格: ¥456.78

この例では、文字列補間を使用して、数値を簡潔に文字列に変換しています。

フォーマット指定子も使用可能です。

変換時のエラーハンドリング

数値と文字列の変換を行う際には、エラーが発生する可能性があります。

ここでは、変換時のエラーハンドリングについて、例外処理の基本、TryParse()を使った安全な変換、そして変換失敗時のデフォルト値設定について解説します。

例外処理の基本

C#では、変換が失敗した場合に例外がスローされることがあります。

例外処理を行うことで、プログラムがクラッシュするのを防ぎ、適切なエラーメッセージを表示することができます。

using System;
class Program
{
    static void Main()
    {
        string numberString = "abc"; // 変換できない文字列
        try
        {
            int number = int.Parse(numberString); // 文字列を整数に変換
            Console.WriteLine(number); // 結果を表示
        }
        catch (FormatException)
        {
            Console.WriteLine("変換に失敗しました: 文字列の形式が正しくありません"); // 例外発生時のメッセージ
        }
    }
}
出力:
変換に失敗しました: 文字列の形式が正しくありません

このコードでは、int.Parse()が失敗した場合にFormatExceptionをキャッチし、エラーメッセージを表示しています。

TryParse()を使った安全な変換

TryParse()メソッドを使用すると、例外をスローせずに変換の成否を確認できます。

これにより、より安全に変換を行うことができます。

using System;
class Program
{
    static void Main()
    {
        string numberString = "abc"; // 変換できない文字列
        if (int.TryParse(numberString, out int number)) // 変換を試みる
        {
            Console.WriteLine(number); // 成功した場合の結果を表示
        }
        else
        {
            Console.WriteLine("変換に失敗しました"); // 失敗した場合のメッセージ
        }
    }
}
出力:
変換に失敗しました

この例では、TryParse()を使用して、変換が成功したかどうかを確認しています。

例外をスローしないため、エラーハンドリングが簡単になります。

変換失敗時のデフォルト値設定

変換が失敗した場合に、デフォルト値を設定することで、プログラムの動作を安定させることができます。

using System;
class Program
{
    static void Main()
    {
        string numberString = "abc"; // 変換できない文字列
        int number;
        if (!int.TryParse(numberString, out number)) // 変換を試みる
        {
            number = 0; // 変換失敗時のデフォルト値を設定
        }
        Console.WriteLine($"変換結果: {number}"); // 結果を表示
    }
}
出力:
変換結果: 0

このコードでは、TryParse()を使用して変換を試み、失敗した場合にはデフォルト値0を設定しています。

これにより、変換失敗時でもプログラムが正常に動作します。

応用例

数値と文字列の変換は、さまざまな場面で応用されます。

ここでは、ユーザー入力の数値変換、ファイルから読み込んだデータの変換、そしてWeb APIから取得したデータの変換について解説します。

ユーザー入力の数値変換

ユーザーからの入力を数値に変換することは、アプリケーション開発においてよくあるシナリオです。

以下の例では、コンソールから入力された文字列を整数に変換しています。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("整数を入力してください:"); // ユーザーに入力を促す
        string input = Console.ReadLine(); // ユーザーからの入力を取得
        if (int.TryParse(input, out int number)) // 入力を整数に変換
        {
            Console.WriteLine($"入力された整数: {number}"); // 成功した場合の結果を表示
        }
        else
        {
            Console.WriteLine("有効な整数を入力してください"); // 失敗した場合のメッセージ
        }
    }
}
整数を入力してください:
123
入力された整数: 123

このコードでは、ユーザーが入力した文字列をint.TryParse()を使って整数に変換し、成功した場合にその値を表示します。

ファイルから読み込んだデータの変換

ファイルから読み込んだデータを数値に変換することも一般的です。

以下の例では、テキストファイルから数値を読み込み、変換しています。

using System;
using System.IO;
class Program
{
    static void Main()
    {
        string filePath = "data.txt"; // 読み込むファイルのパス
        try
        {
            string fileContent = File.ReadAllText(filePath); // ファイルの内容を読み込む
            if (double.TryParse(fileContent, out double number)) // 内容を数値に変換
            {
                Console.WriteLine($"ファイルから読み込んだ数値: {number}"); // 成功した場合の結果を表示
            }
            else
            {
                Console.WriteLine("ファイルの内容を数値に変換できませんでした"); // 失敗した場合のメッセージ
            }
        }
        catch (IOException ex)
        {
            Console.WriteLine($"ファイルの読み込み中にエラーが発生しました: {ex.Message}"); // ファイル読み込みエラーのメッセージ
        }
    }
}
ファイルから読み込んだ数値: 123.45

このコードでは、File.ReadAllText()を使用してファイルの内容を読み込み、double.TryParse()で数値に変換しています。

Web APIから取得したデータの変換

Web APIから取得したデータを数値に変換することも重要です。

以下の例では、Web APIから取得したJSONデータを解析し、数値を抽出しています。

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
class Program
{
    static async Task Main()
    {
        string url = "https://api.example.com/data"; // Web APIのURL
        using (HttpClient client = new HttpClient())
        {
            try
            {
                string json = await client.GetStringAsync(url); // Web APIからデータを取得
                JObject data = JObject.Parse(json); // JSONデータを解析
                if (data["value"] != null && double.TryParse(data["value"].ToString(), out double value)) // 数値を抽出
                {
                    Console.WriteLine($"APIから取得した数値: {value}"); // 成功した場合の結果を表示
                }
                else
                {
                    Console.WriteLine("APIから取得したデータを数値に変換できませんでした"); // 失敗した場合のメッセージ
                }
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine($"APIリクエスト中にエラーが発生しました: {ex.Message}"); // リクエストエラーのメッセージ
            }
        }
    }
}
APIから取得した数値: 678.90

このコードでは、HttpClientを使用してWeb APIからデータを取得し、Newtonsoft.Jsonライブラリを使ってJSONを解析し、数値を抽出しています。

よくある質問

Parse()とTryParse()の違いは何ですか?

Parse()TryParse()はどちらも文字列を数値に変換するためのメソッドですが、動作に違いがあります。

  • Parse()は、文字列を数値に変換する際に、変換が失敗すると例外をスローします。

例:int.Parse("abc")FormatExceptionをスローします。

  • TryParse()は、変換が失敗しても例外をスローせず、falseを返します。

例:int.TryParse("abc", out int result)falseを返し、resultにはデフォルト値が設定されます。

TryParse()は、例外処理を避けたい場合や、変換が失敗する可能性がある入力を扱う際に便利です。

変換が失敗する原因は何ですか?

文字列から数値への変換が失敗する原因はいくつかあります。

  • 文字列の形式が数値として無効である場合。

例:"abc""123abc"は整数に変換できません。

  • 文字列が数値の範囲を超えている場合。

例:非常に大きな数値をintに変換しようとするとOverflowExceptionが発生します。

  • 文化的なフォーマットの違い。

例:小数点の表記が異なる場合(.,の違い)に変換が失敗することがあります。

これらの原因を理解し、適切に対処することで、変換の成功率を高めることができます。

文字列から数値への変換で注意すべき点は?

文字列から数値への変換を行う際には、以下の点に注意する必要があります。

  • 入力の検証を行うこと。

ユーザー入力や外部データは信頼できない場合があるため、変換前に形式を確認することが重要です。

  • 例外処理を適切に行うこと。

Parse()を使用する場合は、例外が発生する可能性を考慮し、try-catchブロックで囲むことを検討してください。

  • 文化的なフォーマットを考慮すること。

特に国際化対応が必要な場合は、NumberStylesCultureInfoを使用して、適切なフォーマットで変換を行うことが重要です。

これらの注意点を守ることで、変換処理をより安全かつ効果的に行うことができます。

まとめ

この記事では、C#における文字列と数値の変換方法について、基本的なメソッドの使い方からエラーハンドリング、応用例までを詳しく解説しました。

これにより、数値と文字列の変換に関する理解が深まり、実際のプログラムでの活用方法が明確になったことでしょう。

これを機に、実際のプロジェクトでこれらの変換方法を試し、より安全で効率的なコードを書くことに挑戦してみてください。

  • URLをコピーしました!
目次から探す