[C#] 文字列と数値の変換方法
C#で文字列と数値を相互に変換する方法はいくつかあります。
文字列を数値に変換するには、int.Parse()やdouble.Parse()、decimal.Parse()などのメソッドを使用します。
これらは文字列が数値形式であることを前提としています。
変換が失敗する可能性がある場合は、int.TryParse()やdouble.TryParse()を使用すると安全です。
逆に、数値を文字列に変換するには、ToString()メソッドを使用します。
これにより、数値型の変数を簡単に文字列に変換できます。
これらの方法を使うことで、C#での文字列と数値の変換が効率的に行えます。
文字列から数値への変換方法
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 | 通貨形式 |
D | 10進数形式(整数) |
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を解析し、数値を抽出しています。
まとめ
この記事では、C#における文字列と数値の変換方法について、基本的なメソッドの使い方からエラーハンドリング、応用例までを詳しく解説しました。
これにより、数値と文字列の変換に関する理解が深まり、実際のプログラムでの活用方法が明確になったことでしょう。
これを機に、実際のプロジェクトでこれらの変換方法を試し、より安全で効率的なコードを書くことに挑戦してみてください。