数字(0~9)を表す文字を整数に変換することは、C#で頻繁に行われる作業です。この記事では、4つの効率的な方法を紹介し、それぞれの長所と短所を強調することで、特定のシナリオに最適なアプローチを選択するのに役立ちます。
目次
‘0’の減算
この方法は、ASCIIとUnicodeにおける文字の連続した順序を利用します。数字文字から文字’0’を引くと、直接その整数相当値が得られます。簡潔で非常に効率的ですが、ASCII数字(’0’~’9’)に限定されます。
using System;
public class CharToIntConversion
{
public static void Main(string[] args)
{
char digitChar = '3';
if (char.IsDigit(digitChar))
{
int intValue = digitChar - '0';
Console.WriteLine($"'{digitChar}'の整数値は: {intValue}");
}
else
{
Console.WriteLine($"'{digitChar}'は数字ではありません。");
}
}
}
char.GetNumericValue()
の使用
char.GetNumericValue()
メソッドは、さまざまなUnicode範囲からの数字を処理する堅牢な変換を提供します。ただし、double
を返し、int
へのキャストが必要であり、数値以外の文字には-1を返します。
using System;
public class CharToIntConversion
{
public static void Main(string[] args)
{
char digitChar = '7';
double numericValue = char.GetNumericValue(digitChar);
if (numericValue != -1)
{
int intValue = (int)numericValue;
Console.WriteLine($"'{digitChar}'の整数値は: {intValue}");
}
else
{
Console.WriteLine($"'{digitChar}'は数値文字ではありません。");
}
}
}
char.GetDecimalDigitValue()
の使用
GetNumericValue()
に似ていますが、10進数の数字(0~9)専用です。int
を直接返し、入力が10進数の数字でない場合は-1を返すため、効率的で簡単です。
using System;
public class CharToIntConversion
{
public static void Main(string[] args)
{
char digitChar = '9';
int intValue = char.GetDecimalDigitValue(digitChar);
if (intValue != -1)
{
Console.WriteLine($"'{digitChar}'の整数値は: {intValue}");
}
else
{
Console.WriteLine($"'{digitChar}'は10進数の数字ではありません。");
}
}
}
int.Parse()
の使用
int.Parse()
は、文字列表現を整数に変換します。単一文字の場合、一見効率が悪いように見えますが、文字列を処理する場合や堅牢なエラー処理が必要な場合は有利です。入力が有効な整数でない場合は、FormatException
をスローします。
using System;
public class CharToIntConversion
{
public static void Main(string[] args)
{
char digitChar = '5';
try
{
int intValue = int.Parse(digitChar.ToString());
Console.WriteLine($"'{digitChar}'の整数値は: {intValue}");
}
catch (FormatException)
{
Console.WriteLine($"'{digitChar}'は有効な整数ではありません。");
}
}
}
最適な方法はコンテキストによって異なります。単純なASCII数字の場合、「’0’の減算」が最も高速です。より広範なUnicodeサポートとエラー処理が必要な場合は、GetNumericValue()
またはGetDecimalDigitValue()
が適しています。int.Parse()
は最も強力なエラー処理を提供しますが、単一文字の場合は最も効率が悪いです。常に潜在的なエラーを適切に処理してください。