persian-number-tostring
Version:
Convert numbers to words - تبدیل عدد به حروف فارسی
6 lines (5 loc) • 1.92 kB
JavaScript
// Persian Number To String
// Developed By Javad Rajabi
// Email : javadrajabi@live.com
// Web : https://github.com/javadrajabi/PersianNumberToString
var s_0_9=new Array("صفر","یک","دو","سه","چهار","پنج","شش","هفت","هشت","نه"),s_10_19=new Array("ده","یازده","دوازده","سیزده","چهارده","پانزده","شانزده","هفده","هجده","نوزده"),s_20_90=new Array("بیست","سی","چهل","پنجاه","شصت","هفتاد","هشتاد","نود"),s_100_900=new Array("صد","دویست","سیصد","چهارصد","پانصد","ششصد","هفتصد","هشتصد","نهصد"),s_Parts=new Array("هزار","میلیون","میلیارد","تريليون"),splitter=" و ",veryBig="تعریف نشده",negative="منفی";function getPart(r){if(r.length>3)return"";var t=r.toString();switch(t.length){case 1:t="00"+t;break;case 2:t="0"+t}var s="",e=parseInt(t.substr(0,1)),a=parseInt(t.substr(1,1)),_=parseInt(t.substr(2,1));if(0!=e)switch(a){case 0:s=0!=_?s_100_900[e-1]+splitter+s_0_9[_]:s_100_900[e-1];break;case 1:s=s_100_900[e-1]+splitter+s_10_19[_];break;default:s=0!=_?s_100_900[e-1]+splitter+s_20_90[a-2]+splitter+s_0_9[_]:s_100_900[e-1]+splitter+s_20_90[a-2]}else switch(a){case 0:s=0!=_?s_0_9[_]:"";break;case 1:s=s_10_19[_];break;default:s=0!=_?s_20_90[a-2]+splitter+s_0_9[_]:s_20_90[a-2]}return s}function PersianNumberToString(r){Number.isSafeInteger(Number(r))||(r=0);var t=Math.abs(r).toString();if(0==t.length)return"";if(0==t)return s_0_9[0];var s=Math.ceil(parseInt(t).toString().length/3,1);if(s_Parts.length<s)return veryBig;for(var e=new Array,a=0;a<s;a++){var _,n;0==a?(n=t.length-3*(s-1),_=t.substr(3*a,n)):_=t.substr(n+3*(a-1),3);var i=getPart(_),l=s_Parts[s-2-a];a==s-1&&(l=""),0==a?e[a]=""!=i?i+" "+l:"":(e[a-1],e[a]=""!=i?splitter+i+" "+l:"")}var u="";for(a=0;a<e.length;a++)u+=e[a];return"-"==r.substr(0,1)&&(u=negative+" "+u),u}