C# Programming

C#’da Verimli Karakter-Tamsayı Dönüşümü

Spread the love

Bir rakamı (0-9) temsil eden karakteri tam sayı karşılığına dönüştürmek, C#’ta sık karşılaşılan bir işlemdir. Bu makale, dört verimli yöntemi inceleyerek, güçlü ve zayıf yönlerini vurgulamakta ve belirli senaryonuz için en iyi yaklaşımı seçmenize yardımcı olmaktadır.

İçindekiler Tablosu

‘0’ Çıkarma

Bu yöntem, ASCII ve Unicode’daki karakterlerin sıralı düzenini kullanır. Bir rakam karakterinden ‘0’ karakterinin çıkarılması, doğrudan tam sayı karşılığını verir. Özlü ve oldukça verimlidir, ancak ASCII rakamlarıyla (‘0’ ila ‘9’) sınırlıdır.


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}' karakterinin tam sayı değeri: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' bir rakam değildir.");
        }
    }
}

char.GetNumericValue() Kullanımı

char.GetNumericValue() yöntemi, çeşitli Unicode aralıklarından rakamları işleyerek sağlam bir dönüşüm sunar. Ancak, bir int‘e dönüştürme gerektiren bir double döndürür ve sayısal olmayan karakterler için -1 döndürür.


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}' karakterinin tam sayı değeri: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' sayısal bir karakter değildir.");
        }
    }
}

char.GetDecimalDigitValue() Kullanımı

GetNumericValue()‘ye benzer, ancak özellikle ondalık rakamlar (0-9) içindir. Doğrudan bir int döndürür ve giriş ondalık bir rakam değilse -1 döndürür, bu da onu verimli ve basit hale getirir.


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}' karakterinin tam sayı değeri: {intValue}");
        }
        else
        {
            Console.WriteLine($"'{digitChar}' ondalık bir rakam değildir.");
        }
    }
}

int.Parse() Kullanımı

int.Parse(), bir dize gösterimini tam sayıya dönüştürür. Tek karakterler için görünüşte daha az verimli olsa da, dizeleri işlerken veya sağlam hata işleme gerektirdiğinde avantajlıdır. Giriş geçerli bir tam sayı değilse FormatException atar.


using System;

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

        try
        {
            int intValue = int.Parse(digitChar.ToString());
            Console.WriteLine($"'{digitChar}' karakterinin tam sayı değeri: {intValue}");
        }
        catch (FormatException)
        {
            Console.WriteLine($"'{digitChar}' geçerli bir tam sayı değildir.");
        }
    }
}

En uygun yöntem, bağlamınıza bağlıdır. Basit ASCII rakamları için ‘0’ çıkarma en hızlı yöntemdir. Daha geniş Unicode desteği ve hata işleme için GetNumericValue() veya GetDecimalDigitValue() tercih edilir. int.Parse() en güçlü hata işlemeyi sunar, ancak tek karakterler için en az verimli yöntemdir. Her zaman potansiyel hataları uygun şekilde ele alın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir