Created
October 15, 2022 10:33
-
-
Save amr3k/d3998052c368e7696f2cae246c608e57 to your computer and use it in GitHub Desktop.
[Arabic] Stringify numbers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function stringifyNumber(num: number, gender: 'male' | 'female' = 'male') { | |
const special = { | |
male: ['', 'الأول', 'الثاني', 'الثالث', 'الرابع', 'الخامس', 'السادس', 'السابع', 'الثامن', 'التاسع', 'العاشر', 'الحادي عشر', 'الثاني عشر', 'الثالث عشر', 'الرابع عشر', 'الخامس عشر', 'السادس عشر', 'السابع عشر', 'الثامن عشر', 'التاسع عشر'], | |
female: ['', 'الأولى', 'الثانية', 'الثالثة', 'الرابعة', 'الخامسة', 'السادسة', 'السابعة', 'الثامنة', 'التاسعة', 'العاشرة', 'الحادية عشر', 'الثانية عشر', 'الثالثة عشر', 'الرابعة عشر', 'الخامسة عشر', 'السادسة عشر', 'السابعة عشر', 'الثامنة عشر', 'التاسعة عشر'] | |
}; | |
const deca = ['عشرون', 'ثلاثون', 'أربعون', 'خمسون', 'ستون', 'سبعون', 'ثمانون', 'تسعون']; | |
if (num < 20) return special[gender][num]; | |
if (num % 10 === 0) return 'ال' + deca[Math.floor(num / 10) - 2]; | |
return special[gender][num % 10] + ' و' + 'ال' + deca[Math.floor(num / 10) - 2]; | |
} | |
console.log(stringifyNumber(39)); // "التاسع والثلاثون" | |
console.log(stringifyNumber(12, 'female')); // "الثانية عشر" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment