如何将数字(从 1 到 99)转换为等效的阿拉伯序数字符串
How to Convert Numbers (from 1 to 99) to the Equivalent Arabic Ordinal Number String
将数字(从 1 到 99)转换为阿拉伯序数字符串
不同于英语序数由原始数字(以数字形式)组成并添加后缀(即 1st、2nd、3rd、4th……),阿拉伯语序数不能这样写,阿拉伯序数是全文表示。
下面的 table 列出了选定的阿拉伯序数(从 1 到 99)。
如果主语是男性或女性,阿拉伯语序数会有所不同。
Whosebug 上没有 Javascript 函数或解决方案可以将数字(在 1 到 99 的范围内)转换为等效的阿拉伯序数文本,同时考虑到主题(男性或女性)。
此类函数的示例可以是:
ordinalsAr(5);
ordinalsAr(21);
// result ==> الخامس
// result ==> الحادي والعشرون
ordinalsAr(5, true); // true flag for Feminine
ordinalsAr(21, true); // true flag for Feminine
// result ==> الخامسة
// result ==> الحادية والعشرون
Arabic Ordinal Numbers
English Ordinals
English Ordinals
Arabic Ordinals
Arabic Ordinals
N°
Ordinal Number
Masculine
Feminine
1st
First
الأول
الأولى
2nd
Second
الثاني
الثانية
3rd
Third
الثالث
الثالثة
4th
Fourth
الرابع
الرابعة
5th
Fifth
الخامس
الخامسة
6th
Sixth
السادس
السادسة
7th
Seventh
السابع
السابعة
8th
Eighth
الثامن
الثامنة
9th
Ninth
التاسع
التاسعة
10th
Tenth
العاشر
العاشرة
11th
Eleventh
الحادي عشر
الحادية عشرة
12th
Twelfth
الثاني عشر
الثانية عشرة
13th
Thirteenth
الثالث عشر
الثالثة عشرة
14th
Fourteenth
الرابع عشر
الرابعة عشرة
15th
Fifteenth
الخامس عشر
الخامسة عشرة
16th
Sixteenth
السادس عشر
السادسة عشرة
17th
Seventeenth
السابع عشر
السابعة عشرة
18th
Eighteenth
الثامن عشر
الثامنة عشرة
19th
Nineteenth
التاسع عشر
التاسعة عشرة
20th
Twentieth
العشرون
العشرون
21st
Twenty-first
الحادي والعشرون
الحادية والعشرون
22nd
Twenty-second
الثاني والعشرون
الثانية والعشرون
23rd
Twenty-third
الثالث والعشرون
الثالثة والعشرون
24th
Twenty-fourth
الرابع والعشرون
الرابعة والعشرون
….
………….
………….
………….
29th
Twenty-ninth
التاسع والعشرون
التاسعة والعشرون
30th
Thirtieth
الثلاثون
الثلاثون
….
………….
………….
………….
40th
Fortieth
الأربعون
الأربعون
….
………….
………….
………….
99th
Ninety-Ninth
التاسع والتسعون
التاسعة والتسعون
function ordinalsAr(num,isFeminine){
let feminineSuffix = "ة";
let specialNums = {
1:{
masculine: "الأول",
feminine: "الأولى"
},
10:{
masculine: "العاشر",
feminine: "العاشرة"
}
}
let lastDigits = {
10:"عشر",
20:"العشرون",
30:"الثلاثون",
40:"الأربعون",
50:"الخمسون",
60:"الستون",
70:"السبعون",
80:"الثمانون",
90:"التسعون",
// you have to add the rest here
}
let firstDigits = {
1:"الحادي",
2:"الثاني",
3:"الثالث",
4:"الرابع",
5:"الخامس",
6:"السادس",
7:"السابع",
8:"الثامن",
9:"التاسع",
}
if (specialNums[num])
return isFeminine ? specialNums[num]['feminine'] : specialNums[num]['masculine']
if(firstDigits[num])
return isFeminine ? firstDigits[num] + feminineSuffix : firstDigits[num]
if(lastDigits[num])
return lastDigits[num]
let firstDigit = num % 10;
let lastDigit = num - firstDigit
if (isFeminine) {
if(lastDigit < 20)
return firstDigits[firstDigit] + feminineSuffix + " " + lastDigits[lastDigit] + feminineSuffix
else
return firstDigits[firstDigit] + feminineSuffix + " و" + lastDigits[lastDigit]
}
else{
if(lastDigit < 20)
return firstDigits[firstDigit] + " " + lastDigits[lastDigit]
}
return firstDigits[firstDigit] + " و" + lastDigits[lastDigit]
}
console.log(ordinalsAr(1))
console.log(ordinalsAr(1,true))
console.log(ordinalsAr(10))
console.log(ordinalsAr(25,true))
console.log(ordinalsAr(35))
console.log(ordinalsAr(19))
console.log(ordinalsAr(19,true))
//===================================
// Additional Test Cases
//===================================
// convert all numbers from 1 to 99
// in both male and female genders
//===================================
for (let i=1; i<100; i++) {
console.log(i,ordinalsAr(i),
ordinalsAr(i,true) );
}
看看 Alan Omar 的代码概念,将数字(从 1 到 99)转换为阿拉伯序数字符串的较短代码如下。
可以在此处找到有关阿拉伯数字转换的更多信息Arabic Numbers
/*********************************************************************
* @function : ordinalsAr(number [, isFeminine])
* @purpose : Converts numbers from 1 to 99 to Arabic Ordinal String
* @version : 1.00
* @author : Mohsen Alyafei
* @date : 27 Jan 2022
* @Licence : MIT
* @param : {number} Integer from 1 to 99
* @param : [isFeminine] the subject's gender:
* false (default) --> Masculine subject (e.g. output الأول الثاني الثالث)
* true --> Feminine subject (e.g. output الأولى الثانية الثالثة)
* @returns : {string} The ordinal Arabic Text.
**********************************************************************/
function ordinalsAr(num, isFeminine=false) {
num %= 100; // only handle the lowest 2 digits (1-99) ignore others
let the = "ال", // set this to "" if you don't want the output prefixed with letters "ال"
unit = num % 10,
ordinal= the + [,"أول","ثاني","ثالث","رابع","خامس","سادس","سابع","ثامن","تاسع","عاشر"]
[num === 10 ? num : unit], // letters for lower part of ordinal string
female = isFeminine ? "ة" : "", // add letter "ة" if Feminine
ones = (unit === 1 ? the + "حادي" : ordinal) + female; // special cases for 21, 31, 41, etc.
return num <11 ? ordinal + (isFeminine && num ===1 ? "ى" : female): // from 1 to 10
num <20 ? ones + " عشر" + female : // from 11 to 19
(unit ? ones + " و" : "") + // else 20 to 99
"ال" + // always add "ال"
[,,"عشر","ثلاث","أربع","خمس","ست","سبع","ثمان","تسع"] // letters for 20, 30, 40...
[ ~~(num / 10)] + "ون";
}
// *=======================================================
//=======================================
// Test Cases
//=======================================
// List the ordinal numbers from 1 to 99
// in both Masculine and Feminine genders
//=======================================
for (let i=1; i<100; i++) {
console.log(i,"M: "+ordinalsAr(i),
"F: "+ordinalsAr(i,true) );
}
将数字(从 1 到 99)转换为阿拉伯序数字符串
不同于英语序数由原始数字(以数字形式)组成并添加后缀(即 1st、2nd、3rd、4th……),阿拉伯语序数不能这样写,阿拉伯序数是全文表示。
下面的 table 列出了选定的阿拉伯序数(从 1 到 99)。
如果主语是男性或女性,阿拉伯语序数会有所不同。
Whosebug 上没有 Javascript 函数或解决方案可以将数字(在 1 到 99 的范围内)转换为等效的阿拉伯序数文本,同时考虑到主题(男性或女性)。
此类函数的示例可以是:
ordinalsAr(5);
ordinalsAr(21);
// result ==> الخامس
// result ==> الحادي والعشرون
ordinalsAr(5, true); // true flag for Feminine
ordinalsAr(21, true); // true flag for Feminine
// result ==> الخامسة
// result ==> الحادية والعشرون
Arabic Ordinal Numbers | |||
---|---|---|---|
English Ordinals | English Ordinals | Arabic Ordinals | Arabic Ordinals |
N° | Ordinal Number | Masculine | Feminine |
1st | First | الأول | الأولى |
2nd | Second | الثاني | الثانية |
3rd | Third | الثالث | الثالثة |
4th | Fourth | الرابع | الرابعة |
5th | Fifth | الخامس | الخامسة |
6th | Sixth | السادس | السادسة |
7th | Seventh | السابع | السابعة |
8th | Eighth | الثامن | الثامنة |
9th | Ninth | التاسع | التاسعة |
10th | Tenth | العاشر | العاشرة |
11th | Eleventh | الحادي عشر | الحادية عشرة |
12th | Twelfth | الثاني عشر | الثانية عشرة |
13th | Thirteenth | الثالث عشر | الثالثة عشرة |
14th | Fourteenth | الرابع عشر | الرابعة عشرة |
15th | Fifteenth | الخامس عشر | الخامسة عشرة |
16th | Sixteenth | السادس عشر | السادسة عشرة |
17th | Seventeenth | السابع عشر | السابعة عشرة |
18th | Eighteenth | الثامن عشر | الثامنة عشرة |
19th | Nineteenth | التاسع عشر | التاسعة عشرة |
20th | Twentieth | العشرون | العشرون |
21st | Twenty-first | الحادي والعشرون | الحادية والعشرون |
22nd | Twenty-second | الثاني والعشرون | الثانية والعشرون |
23rd | Twenty-third | الثالث والعشرون | الثالثة والعشرون |
24th | Twenty-fourth | الرابع والعشرون | الرابعة والعشرون |
…. | …………. | …………. | …………. |
29th | Twenty-ninth | التاسع والعشرون | التاسعة والعشرون |
30th | Thirtieth | الثلاثون | الثلاثون |
…. | …………. | …………. | …………. |
40th | Fortieth | الأربعون | الأربعون |
…. | …………. | …………. | …………. |
99th | Ninety-Ninth | التاسع والتسعون | التاسعة والتسعون |
function ordinalsAr(num,isFeminine){
let feminineSuffix = "ة";
let specialNums = {
1:{
masculine: "الأول",
feminine: "الأولى"
},
10:{
masculine: "العاشر",
feminine: "العاشرة"
}
}
let lastDigits = {
10:"عشر",
20:"العشرون",
30:"الثلاثون",
40:"الأربعون",
50:"الخمسون",
60:"الستون",
70:"السبعون",
80:"الثمانون",
90:"التسعون",
// you have to add the rest here
}
let firstDigits = {
1:"الحادي",
2:"الثاني",
3:"الثالث",
4:"الرابع",
5:"الخامس",
6:"السادس",
7:"السابع",
8:"الثامن",
9:"التاسع",
}
if (specialNums[num])
return isFeminine ? specialNums[num]['feminine'] : specialNums[num]['masculine']
if(firstDigits[num])
return isFeminine ? firstDigits[num] + feminineSuffix : firstDigits[num]
if(lastDigits[num])
return lastDigits[num]
let firstDigit = num % 10;
let lastDigit = num - firstDigit
if (isFeminine) {
if(lastDigit < 20)
return firstDigits[firstDigit] + feminineSuffix + " " + lastDigits[lastDigit] + feminineSuffix
else
return firstDigits[firstDigit] + feminineSuffix + " و" + lastDigits[lastDigit]
}
else{
if(lastDigit < 20)
return firstDigits[firstDigit] + " " + lastDigits[lastDigit]
}
return firstDigits[firstDigit] + " و" + lastDigits[lastDigit]
}
console.log(ordinalsAr(1))
console.log(ordinalsAr(1,true))
console.log(ordinalsAr(10))
console.log(ordinalsAr(25,true))
console.log(ordinalsAr(35))
console.log(ordinalsAr(19))
console.log(ordinalsAr(19,true))
//===================================
// Additional Test Cases
//===================================
// convert all numbers from 1 to 99
// in both male and female genders
//===================================
for (let i=1; i<100; i++) {
console.log(i,ordinalsAr(i),
ordinalsAr(i,true) );
}
看看 Alan Omar 的代码概念,将数字(从 1 到 99)转换为阿拉伯序数字符串的较短代码如下。
可以在此处找到有关阿拉伯数字转换的更多信息Arabic Numbers
/*********************************************************************
* @function : ordinalsAr(number [, isFeminine])
* @purpose : Converts numbers from 1 to 99 to Arabic Ordinal String
* @version : 1.00
* @author : Mohsen Alyafei
* @date : 27 Jan 2022
* @Licence : MIT
* @param : {number} Integer from 1 to 99
* @param : [isFeminine] the subject's gender:
* false (default) --> Masculine subject (e.g. output الأول الثاني الثالث)
* true --> Feminine subject (e.g. output الأولى الثانية الثالثة)
* @returns : {string} The ordinal Arabic Text.
**********************************************************************/
function ordinalsAr(num, isFeminine=false) {
num %= 100; // only handle the lowest 2 digits (1-99) ignore others
let the = "ال", // set this to "" if you don't want the output prefixed with letters "ال"
unit = num % 10,
ordinal= the + [,"أول","ثاني","ثالث","رابع","خامس","سادس","سابع","ثامن","تاسع","عاشر"]
[num === 10 ? num : unit], // letters for lower part of ordinal string
female = isFeminine ? "ة" : "", // add letter "ة" if Feminine
ones = (unit === 1 ? the + "حادي" : ordinal) + female; // special cases for 21, 31, 41, etc.
return num <11 ? ordinal + (isFeminine && num ===1 ? "ى" : female): // from 1 to 10
num <20 ? ones + " عشر" + female : // from 11 to 19
(unit ? ones + " و" : "") + // else 20 to 99
"ال" + // always add "ال"
[,,"عشر","ثلاث","أربع","خمس","ست","سبع","ثمان","تسع"] // letters for 20, 30, 40...
[ ~~(num / 10)] + "ون";
}
// *=======================================================
//=======================================
// Test Cases
//=======================================
// List the ordinal numbers from 1 to 99
// in both Masculine and Feminine genders
//=======================================
for (let i=1; i<100; i++) {
console.log(i,"M: "+ordinalsAr(i),
"F: "+ordinalsAr(i,true) );
}