How to convert Persian and Arabic numbers inside a string to English using JavaScript?

后端 未结 9 1000
萌比男神i
萌比男神i 2020-12-05 04:15

How can I convert Persian/Arabic numbers to English numbers with a simple function?

arabicNumbers = [\"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\",          


        
9条回答
  •  死守一世寂寞
    2020-12-05 04:55

    Transforms any Persian or Arabic (or mixed) number to "English" numbers (Hindu–Arabic numerals)

    var transformNumbers = (function(){
        var numerals = {
            persian : ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"],
            arabic  : ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"]
        };
    
        function fromEnglish(str, lang){
            var i, len = str.length, result = "";
    
            for( i = 0; i < len; i++ )
                result += numerals[lang][str[i]]; 
    
            return result;
        }
    
        return {
            toNormal : function(str){
                var num, i, len = str.length, result = "";
    
                for( i = 0; i < len; i++ ){
                    num = numerals["persian"].indexOf(str[i]);
                    num = num != -1 ? num : numerals["arabic"].indexOf(str[i]);
                    if( num == -1 ) num = str[i];
                    result += num; 
                }
                  
                return result;
            },
    
            toPersian : function(str, lang){
                return fromEnglish(str, "persian");
            },
    
            toArabic : function(str){
                return fromEnglish(str, "arabic");
            }
        }
    })();
    
    //////// ON INPUT EVENT //////////////
    
    document.querySelectorAll('input')[0].addEventListener('input', onInput_Normal);
    document.querySelectorAll('input')[1].addEventListener('input', onInput_Arabic);
    
    function onInput_Arabic(){
       var _n = transformNumbers.toArabic(this.value);
       console.clear();
       console.log( _n )
    }
    
    function onInput_Normal(){
       var _n = transformNumbers.toNormal(this.value);
       console.clear();
       console.log( _n )
    }
    input{ width:90%; margin-bottom:1em; font-size:1.5em; padding:5px; }
    
    
    

提交回复
热议问题