C# Programming

Effiziente Zeichen-zu-Integer-Konvertierung in C#

Spread the love

Die Umwandlung eines Zeichens, das eine Ziffer (0-9) darstellt, in dessen ganzzahliges Äquivalent ist eine häufige Aufgabe in C#. Dieser Artikel untersucht vier effiziente Methoden und hebt deren Stärken und Schwächen hervor, um Ihnen bei der Auswahl des besten Ansatzes für Ihr spezifisches Szenario zu helfen.

Inhaltsverzeichnis

‚0‘ subtrahieren

Diese Methode nutzt die sequentielle Ordnung von Zeichen in ASCII und Unicode. Die Subtraktion des Zeichens ‚0‘ von einem Zifferzeichen liefert direkt dessen ganzzahliges Äquivalent. Sie ist prägnant und sehr effizient, aber auf ASCII-Ziffern (‚0‘ bis ‚9‘) beschränkt.


using System;

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

        if (char.IsDigit(digitChar))
        {
            int intValue = digitChar - '0';
            Console.WriteLine($"Der ganzzahlige Wert von '{digitChar}' ist: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' ist keine Ziffer.");
        }
    }
}

Verwendung von char.GetNumericValue()

Die Methode char.GetNumericValue() bietet eine robuste Konvertierung und verarbeitet Ziffern aus verschiedenen Unicode-Bereichen. Sie liefert jedoch einen double-Wert, der in einen int umgewandelt werden muss, und gibt -1 für nicht-numerische Zeichen zurück.


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($"Der ganzzahlige Wert von '{digitChar}' ist: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' ist kein numerisches Zeichen.");
        }
    }
}

Verwendung von char.GetDecimalDigitValue()

Ähnlich wie GetNumericValue(), aber speziell für Dezimalziffern (0-9). Sie liefert direkt einen int-Wert und -1, wenn die Eingabe keine Dezimalziffer ist, was sie effizient und unkompliziert macht.


using System;

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

        if (intValue != -1)
        {
            Console.WriteLine($"Der ganzzahlige Wert von '{digitChar}' ist: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' ist keine Dezimalziffer.");
        }
    }
}

Verwendung von int.Parse()

int.Parse() konvertiert eine String-Darstellung in eine ganze Zahl. Obwohl es für einzelne Zeichen scheinbar weniger effizient ist, ist es vorteilhaft bei der Verarbeitung von Strings oder wenn eine robuste Fehlerbehandlung erforderlich ist. Es löst eine FormatException aus, wenn die Eingabe keine gültige ganze Zahl ist.


using System;

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

        try
        {
            int intValue = int.Parse(digitChar.ToString());
            Console.WriteLine($"Der ganzzahlige Wert von '{digitChar}' ist: {intValue}");
        }
        catch (FormatException)
        {
            Console.WriteLine($"'{digitChar}' ist keine gültige ganze Zahl.");
        }
    }
}

Die optimale Methode hängt von Ihrem Kontext ab. Für einfache ASCII-Ziffern ist die Subtraktion von ‚0‘ am schnellsten. Für breitere Unicode-Unterstützung und Fehlerbehandlung sind GetNumericValue() oder GetDecimalDigitValue() vorzuziehen. int.Parse() bietet die stärkste Fehlerbehandlung, ist aber für einzelne Zeichen am wenigsten effizient. Behandeln Sie potenzielle Fehler immer angemessen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert