توفر Kotlin عدة طرق فعالة لتحويل السلاسل النصية إلى أعداد صحيحة. يعتمد أفضل نهج على تفضيلاتك في معالجة الأخطاء. تستعرض هذه المقالة ثلاث طرق شائعة: toInt()
و toIntOrNull()
و parseInt()
، مع تسليط الضوء على نقاط القوة والضعف لكل منها.
جدول المحتويات
- تحويل السلاسل النصية إلى أعداد صحيحة باستخدام
toInt()
- التحويل الآمن باستخدام
toIntOrNull()
- استخدام
parseInt()
لتحويل السلاسل النصية إلى أعداد صحيحة
تحويل السلاسل النصية إلى أعداد صحيحة باستخدام toInt()
توفر طريقة toInt()
نهجًا مباشرًا. ومع ذلك، فإنها تطرح استثناء NumberFormatException
إذا لم تكن السلسلة النصية المدخلة عددًا صحيحًا صالحًا. وهذا يتطلب كتلة try-catch
لمعالجة الأخطاء بشكل قوي.
fun stringToInt(str: String): Int {
return try {
str.toInt()
} catch (e: NumberFormatException) {
println("إدخال غير صالح: $str")
0 // أو طرح استثناء مخصص، أو إرجاع قيمة افتراضية أخرى
}
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("تحويل '$numStr1': ${stringToInt(numStr1)}") // الإخراج: 123
println("تحويل '$numStr2': ${stringToInt(numStr2)}") // الإخراج: إدخال غير صالح: abc، 0
}
يُظهر هذا المثال كيفية إدارة الاستثناء. تذكر تكييف معالجة الأخطاء (println
وقيمة الإرجاع 0
) حسب احتياجات تطبيقك.
التحويل الآمن باستخدام toIntOrNull()
يوفر toIntOrNull()
بديلاً أكثر أمانًا. فهو يُرجع العدد الصحيح إذا نجح، أو null
إذا فشل التحويل. هذا يلغي try-catch
، مما يؤدي إلى رمز أنظف وتجنب عبء معالجة الاستثناءات.
fun stringToIntOrNull(str: String): Int? {
return str.toIntOrNull()
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("تحويل '$numStr1': ${stringToIntOrNull(numStr1)}") // الإخراج: 123
println("تحويل '$numStr2': ${stringToIntOrNull(numStr2)}") // الإخراج: null
}
val num = stringToIntOrNull("456")
val result = num ?: 0 // استخدام 0 كقيمة افتراضية إذا فشل التحويل
println(result) // الإخراج: 456
val num2 = stringToIntOrNull("xyz")
val result2 = num2 ?: 0
println(result2) // الإخراج: 0
يعالج عامل إلفيس (?:
) بشكل أنيق قيمة null
المحتملة. يُنصح عمومًا بهذا النهج لإيجازه وأمانه.
استخدام parseInt()
لتحويل السلاسل النصية إلى أعداد صحيحة
توفر طريقة parseInt()
(java.lang.Integer.parseInt()
) خيارًا آخر، لكنها أقل دقة في Kotlin. مثل toInt()
، فإنها تطرح استثناء NumberFormatException
يتطلب try-catch
. وهي أقل تفضيلًا عمومًا من طرق Kotlin المدمجة.
fun stringToIntParseInt(str: String): Int {
return try {
Integer.parseInt(str)
} catch (e: NumberFormatException) {
println("إدخال غير صالح: $str")
0 // أو معالجة الاستثناء بشكل مختلف
}
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("تحويل '$numStr1': ${stringToIntParseInt(numStr1)}") // الإخراج: 123
println("تحويل '$numStr2': ${stringToIntParseInt(numStr2)}") // الإخراج: إدخال غير صالح: abc، 0
}
باختصار، toIntOrNull()
هو النهج الموصى به نظرًا لإيجازه وأمانه من حيث قيمة null. استخدم toInt()
فقط عندما تكون متأكدًا من أن السلسلة النصية المدخلة هي دائمًا عدد صحيح صالح وترغب في معالجة الاستثناءات بشكل صريح. تجنب parseInt()
إلا إذا كان هناك سبب وجيه لاستخدام طريقة Java. تعامل دائمًا مع الأخطاء المحتملة بشكل فعال لمنع تعطل التطبيق.