在JavaScript中将数字转换为阿拉伯字母

时间:2017-08-05 16:12:34

标签: javascript

下面是我的代码,当我尝试转换23时,它转换为عشرينتلاته,但我希望它转换为ثلاثةوعشرونوهكذا。

var th = ['', 'ألف', 'مليون', 'مليار', 'تريليون'];
        var dg = ['صفر', 'واحد', 'اثنين', 'ثلاثة', 'أربعة', 'خمسة', 'ستة', 'سبعة', 'ثمانية', 'تسعة'];
        var tn = ['عشرة', 'أحد عشر', 'اثني عشر', 'ثلاثة عشر', 'أربعة عشر', 'خمسة عشر', 'ستة عشر', 'سبعة عشر', 'ثمانية عشر', 'تسعة عشر'];
        var tw = ['عشرون', 'ثلاثون', 'الأربعين', 'خمسين', 'ستين', 'السبعين', 'ثمانين', 'تسعين'];

        function toWords(s) {
            s = s.toString();
            s = s.replace(/[\, ]/g, '');
            if (s != parseFloat(s)) return 'لیس عدد';
            var x = s.indexOf('.');
            if (x == -1) x = s.length;
            if (x > 15) return 'كبير جدا';
            var n = s.split('');
            var str = '';
            var sk = 0;
            for (var i = 0; i < x; i++) {
                if ((x - i) % 3 == 2) {
                    if (n[i] == '1') {
                        str += tn[Number(n[i + 1])] + ' ';
                        i++;
                        sk = 1;
                    } else if (n[i] != 0) {
                        str += tw[n[i] - 2] + ' ';
                        sk = 1;
                    }
                } else if (n[i] != 0) {
                    str += dg[n[i]] + ' ';
                    if ((x - i) % 3 == 0) str += 'مائة ';
                    sk = 1;
                }
                if ((x - i) % 3 == 1) {
                    if (sk) str += th[(x - i - 1) / 3] + ' ';
                    sk = 0;
                }
            }
            if (x != s.length) {
                var y = s.length;
                str += 'نقطة ';
                for (var i = x + 1; i < y; i++) str += dg[n[i]] + ' ';
            }
            return str.replace(/\s+/g, ' ');
        }
        
        
        
        console.log(toWords(23))

2 个答案:

答案 0 :(得分:1)

mingw-w64

答案 1 :(得分:0)

您好,我不懂阿拉伯语,但我想这个解决方案可以在这个特定的问题/解决方案中找到。 Convert digits into words with JavaScript