تحويل حرف يمثل رقمًا (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()
أقوى معالجة للأخطاء ولكنها الأقل كفاءة للحروف المفردة. تعامل دائمًا مع الأخطاء المحتملة بشكل مناسب.