C# Programming

C#における効率的な文字から整数への変換

Spread the love

数字(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()は最も強力なエラー処理を提供しますが、単一文字の場合は最も効率が悪いです。常に潜在的なエラーを適切に処理してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です