convertNumberToArabicWords function
String
convertNumberToArabicWords(
- int number
)
Implementation
String convertNumberToArabicWords(int number) {
/// MODIFY CODE ONLY BELOW THIS LINE
if (number == 0) return 'صفر';
// Lists for units, tens, and special numbers
final arabicUnits = [
'صفر',
'واحد',
'اثنان',
'ثلاثة',
'أربعة',
'خمسة',
'ستة',
'سبعة',
'ثمانية',
'تسعة'
];
final arabicTens = [
'عشرة',
'عشرون',
'ثلاثون',
'أربعون',
'خمسون',
'ستون',
'سبعون',
'ثمانون',
'تسعون'
];
final specialNumbers = {
11: 'أحد عشر',
12: 'اثنا عشر',
13: 'ثلاثة عشر',
14: 'أربعة عشر',
15: 'خمسة عشر',
16: 'ستة عشر',
17: 'سبعة عشر',
18: 'ثمانية عشر',
19: 'تسعة عشر'
};
String result = '';
// Handle billions
if (number >= 1000000000) {
int billions = number ~/ 1000000000;
result += '${convertNumberToArabicWords(billions)} مليار';
number %= 1000000000;
if (number > 0) result += ' و ';
}
// Handle millions
if (number >= 1000000) {
int millions = number ~/ 1000000;
result += '${convertNumberToArabicWords(millions)} مليون';
number %= 1000000;
if (number > 0) result += ' و ';
}
// Handle thousands
if (number >= 1000) {
int thousands = number ~/ 1000;
result +=
thousands == 1 ? 'ألف' : '${convertNumberToArabicWords(thousands)} ألف';
number %= 1000;
if (number > 0) result += ' و ';
}
// Handle hundreds
if (number >= 100) {
int hundreds = number ~/ 100;
result += hundreds == 1
? 'مئة'
: hundreds == 2
? 'مئتان'
: '${arabicUnits[hundreds]} مئة';
number %= 100;
if (number > 0) result += ' و ';
}
// Handle numbers between 10 and 19
if (number >= 10 && number < 20) {
result += specialNumbers[number]!;
return result; // Early exit to avoid further processing
}
// Handle tens
if (number >= 20) {
int tens = number ~/ 10;
result += arabicTens[tens - 1];
number %= 10;
if (number > 0) result += ' و ';
}
// Handle units
if (number > 0) {
result += arabicUnits[number];
}
return result;
/// MODIFY CODE ONLY ABOVE THIS LINE
}