Skip to content

Instantly share code, notes, and snippets.

@khaschuluu
Last active January 17, 2020 12:19
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save khaschuluu/890342 to your computer and use it in GitHub Desktop.
Save khaschuluu/890342 to your computer and use it in GitHub Desktop.
Тоог монгол тооны нэршил рүү хөрвүүлэгч, javascript дээр учир вэбэд ашиглахад тохиромжтой.
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
//separatrix numeral (like european)
numeral = {
sne: [
"мянга",
"сая",
"тэр бум",
"наяд",
"маш дэлгэмэл",
"тунамал",
"ингүүмэл",
"хямралгүй",
"ялгаруулагч",
"өвөр дээр",
"хөөн удирдагч",
"хязгаар үзэгдэл ",
"шалтгааны зүйл",
"үзэсгэлэнт гэрэлт",
"эрхэт",
"сайтар хүргэсэн",
"онон одох",
"живэх тоосон",
"бэлэг тэмдэг",
"хүчин нөхөр",
"дохио мэдэхүй",
"тийн болсон",
"хүчин нүдэн",
"асрангуй",
"нигүүлсэнгүй",
"баясангуй",
"тэгш",
"тоомьгүй",
"хэмжээлшгүй",
"цаглашгүй",
"өгүүлшгүй",
"хирлэшгүй",
"үлэшгүй",
"үлэж дуусашгүй",
"сэтгэшгүй"
],
//unity numeral
un: [
"",
"нэг",
"хоёр",
"гурав",
"дөрөв",
"тав",
"зургаа",
"долоо",
"найм",
"ес"
],
//bander unity numeral
unb: [
"",
"нэгэн",
"хоёр",
"гурван",
"дөрвөн",
"таван",
"зургаан",
"долоон",
"найман",
"есөн"
],
//decimal numeral
dn: [
"",
"арав",
"хорь",
"гуч",
"дөч",
"тавь",
"жар",
"дал",
"ная",
"ер",
],
//bander decimal numeral
dnb: [
"",
"арван",
"хорин",
"гучин",
"дөчин",
"тавин",
"жаран",
"далан",
"наян",
"ерэн"
],
//centurion numeral
cn: [
"зуу"
],
//bander centurion numeral
cnb: [
"зуун"
]
};
chainer = (num) => {
let name = ''
let counter = 0
let n = num.split('').reverse().join('')
n = n.match(/.{1,3}/g).map((m) => m.split('').reverse().join('')).reverse()
name = inhundred(n.pop(), true) + name
while (n.length) {
let pop = n.pop()
if (pop !== '000') {
name = inhundred(pop) + numeral.sne[counter] + ' ' + name
}
counter += 1
}
return name.trim().replace(/ +/g, ' ')
}
inhundred = (num, islast=false) => {
let name = ''
let n = ('000'+num).match(/.{3}$/g)[0]
if (n === '001') {
if (islast) {
name = numeral.un[n[2]]
}
} else {
if (n[0] !== '0') {
if (n[0] !== '1') {
name += numeral.unb[n[0]] + ' '
}
if (islast && n[1] === '0' && n[2] === '0') {
name += numeral.cn + ' '
} else {
name += numeral.cnb + ' '
}
}
if (n[1] !== '0') {
name += numeral.dnb[n[1]] + ' '
}
if (islast) {
name += numeral.un[n[2]] + ' '
} else {
name += numeral.unb[n[2]] + ' '
}
}
return name
}
function generate() {
document.getElementById("numeral_out").innerHTML = chainer(document.getElementById("numeral_in").value);
}
</script>
</head>
<body>
<div id="numeral_out"></div>
<input type="text" name="numeral_in" id="numeral_in" />
<button id="numeral_submit" onClick="generate()">Convert</button>
</body>
</html>
@sharavsambuu
Copy link

hey man! thanks for the share!

@bayartsog
Copy link

Алдаатай хөрвүүлж байна лээ шүү 1000 жишээ нь

@vnarmandakh
Copy link

1601620000000 -> "нэг наяд зургаан зуун нэг тэр бум зургаан зуун хорин сая мянга" гэж алдаж байна.

@khaschuluu
Copy link
Author

@sharavsambuu thanks for comment :D
@bayartsog @vnarmandakh арай дээрдүүллээ, туршаад үзээрэй.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment