C# Programming

Conversão Eficiente de Caractere para Inteiro em C#

Spread the love

Converter um caractere representando um dígito (0-9) para seu equivalente inteiro é uma tarefa frequente em C#. Este artigo explora quatro métodos eficientes, destacando seus pontos fortes e fracos para ajudá-lo a escolher a melhor abordagem para seu cenário específico.

Sumário

Subtraindo ‘0’

Este método explora a ordenação sequencial de caracteres em ASCII e Unicode. Subtrair o caractere ‘0’ de um caractere dígito resulta diretamente em seu equivalente inteiro. É conciso e altamente eficiente, mas limitado a dígitos ASCII (‘0’ a ‘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($"O valor inteiro de '{digitChar}' é: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' não é um dígito.");
        }
    }
}

Usando char.GetNumericValue()

O método char.GetNumericValue() oferece conversão robusta, manipulando dígitos de várias faixas Unicode. No entanto, ele retorna um double, exigindo um cast para int, e retorna -1 para caracteres não numéricos.


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($"O valor inteiro de '{digitChar}' é: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' não é um caractere numérico.");
        }
    }
}

Usando char.GetDecimalDigitValue()

Similar a GetNumericValue(), mas especificamente para dígitos decimais (0-9). Retorna um int diretamente e -1 se a entrada não for um dígito decimal, tornando-o eficiente e direto.


using System;

public class CharToIntConversion
{
    public static void Main(string[] args)
    {
        char digitChar = '9';
        int intValue = char.GetDecimalDigitValue(digitChar);

        if (intValue != -1)
        {
            Console.WriteLine($"O valor inteiro de '{digitChar}' é: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' não é um dígito decimal.");
        }
    }
}

Usando int.Parse()

int.Parse() converte uma representação de string para um inteiro. Embora aparentemente menos eficiente para caracteres únicos, é vantajoso ao manipular strings ou exigir tratamento de erros robusto. Ele lança uma FormatException se a entrada não for um inteiro válido.


using System;

public class CharToIntConversion
{
    public static void Main(string[] args)
    {
        char digitChar = '5';

        try
        {
            int intValue = int.Parse(digitChar.ToString());
            Console.WriteLine($"O valor inteiro de '{digitChar}' é: {intValue}");
        }
        catch (FormatException)
        {
            Console.WriteLine($"'{digitChar}' não é um inteiro válido.");
        }
    }
}

O método ideal depende do seu contexto. Para dígitos ASCII simples, subtrair ‘0’ é o mais rápido. Para suporte mais amplo de Unicode e tratamento de erros, GetNumericValue() ou GetDecimalDigitValue() são preferíveis. int.Parse() oferece o tratamento de erros mais robusto, mas é o menos eficiente para caracteres únicos. Sempre trate erros potenciais apropriadamente.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *