nepali-number-word
Version:
Convert numbers to Nepali digits or words with format.
333 lines • 11.6 kB
JavaScript
const nepaliNumbers = {
0: "शून्य",
1: "एक",
2: "दुई",
3: "तीन",
4: "चार",
5: "पाँच",
6: "छ",
7: "सात",
8: "आठ",
9: "नौ",
10: "दश",
11: "एघार",
12: "बाह्र",
13: "तेह्र",
14: "चौध",
15: "पन्ध्र",
16: "सोह्र",
17: "सत्र",
18: "अठार",
19: "उन्नाइस",
20: "बीस",
21: "एक्काइस",
22: "बाइस",
23: "तेइस",
24: "चौविस",
25: "पच्चिस",
26: "छब्बिस",
27: "सत्ताइस",
28: "अठ्ठाइस",
29: "उनन्तिस",
30: "तीस",
31: "एकतिस",
32: "बत्तिस",
33: "तेत्तिस",
34: "चौतीस",
35: "पैँतीस",
36: "छत्तिस",
37: "सैँतीस",
38: "अठतीस",
39: "उनन्चालीस",
40: "चालीस",
41: "एकचालीस",
42: "बयालीस",
43: "त्रिचालीस",
44: "चौवालिस",
45: "पैंतालीस",
46: "छयालीस",
47: "सतचालीस",
48: "अठचालीस",
49: "उनन्चास",
50: "पचास",
51: "एकाउन्न",
52: "बाउन्न",
53: "त्रिपन्न",
54: "चौवन्न",
55: "पचपन्न",
56: "छपन्न",
57: "सन्ताउन्न",
58: "अन्ठाउन्न",
59: "उनन्साठी",
60: "साठी",
61: "एकसाठी",
62: "बैसाठी",
63: "त्रिसाठी",
64: "चौंसाठी",
65: "पैंसाठी",
66: "छैंसाठी",
67: "सतसाठी",
68: "अठसाठी",
69: "उनन्सत्तरी",
70: "सत्तरी",
71: "एकहत्तर",
72: "बहत्तर",
73: "त्रिहत्तर",
74: "चौहत्तर",
75: "पचहत्तर",
76: "छयहत्तर",
77: "सतहत्तर",
78: "अठहत्तर",
79: "उनासी",
80: "असी",
81: "एकासी",
82: "बयासी",
83: "त्रियासी",
84: "चौरासी",
85: "पचासी",
86: "छयासी",
87: "सतासी",
88: "अठासी",
89: "उनान्नब्बे",
90: "नब्बे",
91: "एकान्नब्बे",
92: "बयान्नब्बे",
93: "त्रियान्नब्बे",
94: "चौरान्नब्बे",
95: "पन्चान्नब्बे",
96: "छयान्नब्बे",
97: "सन्तान्नब्बे",
98: "अन्ठान्नब्बे",
99: "उनान्सय",
};
const englishToNepaliNumbers = {
0: "०",
1: "१",
2: "२",
3: "३",
4: "४",
5: "५",
6: "६",
7: "७",
8: "८",
9: "९",
};
const findNepaliWord = (num) => nepaliNumbers[num] || "अमान्य";
const findNepaliNumber = (num) => englishToNepaliNumbers[num] || null;
function containsLetters(val) {
return /\D/.test(val);
}
export async function convertNumberIntoNpNumWord(data) {
const val = data.toString().trim();
if (val == "" || containsLetters(val))
return "कृपया मान्य संख्या प्रविष्ट गर्नुहोस्।";
if (parseInt(val) == 0) return findNepaliWord(0);
const length = val.length;
if (length > 41) return "असक्षम";
else if (length <= 2) return double(val);
else if (length <= 3) return hundreds(val);
else if (length <= 5) return thousands(val);
else if (length <= 7) return lakhs(val);
else if (length <= 9) return crore(val);
else if (length <= 11) return arab(val);
else if (length <= 13) return kharab(val);
else if (length <= 15) return neel(val);
else if (length <= 17) return padam(val);
else if (length <= 19) return shankh(val);
else if (length <= 21) return upadh(val);
else if (length <= 23) return ank(val);
else if (length <= 25) return jald(val);
else if (length <= 27) return madh(val);
else if (length <= 29) return parardh(val);
else if (length <= 31) return ant(val);
else if (length <= 33) return mahaant(val);
else if (length <= 35) return shishant(val);
else if (length <= 37) return shinghr(val);
else if (length <= 39) return mahaSighr(val);
else if (length <= 41) return adantSighr(val);
}
function double(num) {
return parseInt(num[0]) == 0 ? findNepaliWord(num[1]) : findNepaliWord(num);
}
function hundreds(num) {
const front = parseInt(num[0]) !== 0 ? findNepaliWord(num[0]) : false;
const rest =
parseInt(num.slice(1)) !== 0 ? double(parseInt(num.slice(1))) : "";
return `${front ? front + " सय " : ""} ${rest}`;
}
function thousands(num) {
const front =
parseInt(num.slice(0, -3)) !== 0
? findNepaliWord(parseInt(num.slice(0, -3)))
: false;
const rest = parseInt(num.slice(-3)) !== 0 ? hundreds(num.slice(-3)) : "";
return `${front ? front + " हजार " : ""} ${rest}`;
}
function lakhs(num) {
const front =
parseInt(num.slice(0, -5)) !== 0
? findNepaliWord(parseInt(num.slice(0, -5)))
: false;
const rest = parseInt(num.slice(-5)) !== 0 ? thousands(num.slice(-5)) : "";
return `${front ? front + " लाख " : ""} ${rest}`;
}
function crore(num) {
const front =
parseInt(num.slice(0, -7)) !== 0
? findNepaliWord(parseInt(num.slice(0, -7)))
: false;
const rest = parseInt(num.slice(-7)) !== 0 ? lakhs(num.slice(-7)) : "";
return `${front ? front + " करोड " : ""} ${rest}`;
}
function arab(num) {
const front =
parseInt(num.slice(0, -9)) !== 0
? findNepaliWord(parseInt(num.slice(0, -9)))
: false;
const rest = parseInt(num.slice(-9)) !== 0 ? crore(num.slice(-9)) : "";
return `${front ? front + " अरब " : ""} ${rest}`;
}
function kharab(num) {
const front =
parseInt(num.slice(0, -11)) !== 0
? findNepaliWord(parseInt(num.slice(0, -11)))
: false;
const rest = parseInt(num.slice(-11)) !== 0 ? arab(num.slice(-11)) : "";
return `${front ? front + " खराब " : ""} ${rest}`;
}
function neel(num) {
const front =
parseInt(num.slice(0, -13)) !== 0
? findNepaliWord(parseInt(num.slice(0, -13)))
: false;
const rest = parseInt(num.slice(-13)) !== 0 ? kharab(num.slice(-13)) : "";
return `${front ? front + " नील " : ""} ${rest}`;
}
function padam(num) {
const front =
parseInt(num.slice(0, -15)) !== 0
? findNepaliWord(parseInt(num.slice(0, -15)))
: false;
const rest = parseInt(num.slice(-15)) !== 0 ? neel(num.slice(-15)) : "";
return `${front ? front + " पद्म " : ""} ${rest}`;
}
function shankh(num) {
const front =
parseInt(num.slice(0, -17)) !== 0
? findNepaliWord(parseInt(num.slice(0, -17)))
: false;
const rest = parseInt(num.slice(-17)) !== 0 ? padam(num.slice(-17)) : "";
return `${front ? front + " शंख " : ""} ${rest}`;
}
function upadh(num) {
const front =
parseInt(num.slice(0, -19)) !== 0
? findNepaliWord(parseInt(num.slice(0, -19)))
: false;
const rest = parseInt(num.slice(-19)) !== 0 ? shankh(num.slice(-19)) : "";
return `${front ? front + " उपाध " : ""} ${rest}`;
}
function ank(num) {
const front =
parseInt(num.slice(0, -21)) !== 0
? findNepaliWord(parseInt(num.slice(0, -21)))
: false;
const rest = parseInt(num.slice(-21)) !== 0 ? upadh(num.slice(-21)) : "";
return `${front ? front + " अंक " : ""} ${rest}`;
}
function jald(num) {
const front =
parseInt(num.slice(0, -23)) !== 0
? findNepaliWord(parseInt(num.slice(0, -23)))
: false;
const rest = parseInt(num.slice(-23)) !== 0 ? ank(num.slice(-23)) : "";
return `${front ? front + " जल्द " : ""} ${rest}`;
}
function madh(num) {
const front =
parseInt(num.slice(0, -25)) !== 0
? findNepaliWord(parseInt(num.slice(0, -25)))
: false;
const rest = parseInt(num.slice(-25)) !== 0 ? jald(num.slice(-25)) : "";
return `${front ? front + " मध " : ""} ${rest}`;
}
function parardh(num) {
const front =
parseInt(num.slice(0, -27)) !== 0
? findNepaliWord(parseInt(num.slice(0, -27)))
: false;
const rest = parseInt(num.slice(-27)) !== 0 ? madh(num.slice(-27)) : "";
return `${front ? front + " परर्ध " : ""} ${rest}`;
}
function ant(num) {
const front =
parseInt(num.slice(0, -29)) !== 0
? findNepaliWord(parseInt(num.slice(0, -29)))
: false;
const rest = parseInt(num.slice(-29)) !== 0 ? parardh(num.slice(-29)) : "";
return `${front ? front + " अन्त " : ""} ${rest}`;
}
function mahaant(num) {
const front =
parseInt(num.slice(0, -31)) !== 0
? findNepaliWord(parseInt(num.slice(0, -31)))
: false;
const rest = parseInt(num.slice(-31)) !== 0 ? ant(num.slice(-31)) : "";
return `${front ? front + " महाअन्त " : ""} ${rest}`;
}
function shishant(num) {
const front =
parseInt(num.slice(0, -33)) !== 0
? findNepaliWord(parseInt(num.slice(0, -33)))
: false;
const rest = parseInt(num.slice(-33)) !== 0 ? mahaant(num.slice(-33)) : "";
return `${front ? front + " शिशंत " : ""} ${rest}`;
}
function shinghr(num) {
const front =
parseInt(num.slice(0, -35)) !== 0
? findNepaliWord(parseInt(num.slice(0, -35)))
: false;
const rest = parseInt(num.slice(-35)) !== 0 ? shishant(num.slice(-35)) : "";
return `${front ? front + " सिंघर " : ""} ${rest}`;
}
function mahaSighr(num) {
const front =
parseInt(num.slice(0, -37)) !== 0
? findNepaliWord(parseInt(num.slice(0, -37)))
: false;
const rest = parseInt(num.slice(-37)) !== 0 ? shinghr(num.slice(-37)) : "";
return `${front ? front + " महासिंघर " : ""} ${rest}`;
}
function adantSighr(num) {
const front =
parseInt(num.slice(0, -39)) !== 0
? findNepaliWord(parseInt(num.slice(0, -39)))
: false;
const rest = parseInt(num.slice(-39)) !== 0 ? mahaSighr(num.slice(-39)) : "";
return `${front ? front + " अदन्त सिंघर " : ""} ${rest}`;
}
export async function convertIntoNepaliNumber(data) {
const val = data.toString().trim();
if (val == "") return "कृपया मान्य संख्या प्रविष्ट गर्नुहोस्।";
if (parseInt(val) == 0) return findNepaliNumber(0);
let npNum = val.split("");
let npNumCon = [];
npNum.forEach((num) => {
npNumCon.push(findNepaliNumber(num));
});
let formattedNumber = npNumCon.join("");
return formatNepaliNumber(formattedNumber);
}
function formatNepaliNumber(number) {
let numStr = number.toString();
let lastThree = numStr.slice(-3);
let otherDigits = numStr.slice(0, -3);
let nepaliFormatted = "";
while (otherDigits.length > 0) {
let pair = otherDigits.slice(-2);
nepaliFormatted = pair + (nepaliFormatted ? "," + nepaliFormatted : "");
otherDigits = otherDigits.slice(0, -2);
}
return nepaliFormatted + (nepaliFormatted ? "," : "") + lastThree;
}