C# Programming

Эффективное преобразование символов в целые числа в C#

Spread the love

Преобразование символа, представляющего цифру (0-9), в его целочисленный эквивалент — частая задача в C#. В этой статье рассматриваются четыре эффективных метода, выделяются их сильные и слабые стороны, чтобы помочь вам выбрать наилучший подход для вашей конкретной ситуации.

Содержание

Вычитание ‘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(), но специально для десятичных цифр (0-9). Он возвращает int напрямую и -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}' не является десятичной цифрой.");
        }
    }
}

Использование 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() обеспечивает самую надежную обработку ошибок, но наименее эффективен для отдельных символов. Всегда обрабатывайте потенциальные ошибки соответствующим образом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *