用angularjs转换大写金额

用angularjs转换大写金额,angularjs,Angularjs,我需要将金额转换成文字。例如,我将从服务中获得的金额是9876,我需要在表格中显示“九千八百七十六” 我需要用angularjs来做这件事。请帮我怎么做 函数转换器numbertowords(金额){ var words=新数组(); 字[0]=''; 字[1]=“一”; 字[2]=“两个”; 字[3]=“三”; 字[4]=“四”; 字[5]=“五”; 字[6]=“六”; 字[7]=“七”; 字[8]=“八”; 字[9]=“九”; 字[10]=“十”; 字[11]=“十一”; 字[12]=“

我需要将金额转换成文字。例如,我将从服务中获得的金额是9876,我需要在表格中显示“九千八百七十六”

我需要用angularjs来做这件事。请帮我怎么做

函数转换器numbertowords(金额){
var words=新数组();
字[0]='';
字[1]=“一”;
字[2]=“两个”;
字[3]=“三”;
字[4]=“四”;
字[5]=“五”;
字[6]=“六”;
字[7]=“七”;
字[8]=“八”;
字[9]=“九”;
字[10]=“十”;
字[11]=“十一”;
字[12]=“十二”;
字[13]=“十三”;
字[14]=“十四”;
字[15]=“十五”;
字[16]=“十六”;
字[17]=“十七”;
字[18]=“十八”;
字[19]=“十九”;
字[20]=“二十”;
字[30]=“三十”;
字[40]=“四十”;
字[50]=“五十”;
字[60]=“六十”;
字[70]=“七十”;
字[80]=“八十”;
字[90]=“九十”;
amount=amount.toString();
var atemp=金额拆分(“.”);
var number=atemp[0]。拆分(“,”)。联接(“”);
var n_length=number.length;
var words_string=“”;

如果(n_length定义一个过滤器将数字转换为单词,如以下代码:

angular.module('myModuleName')

.filter('convertToWord', function() {
    return function(amount) {
        var words = new Array();
        words[0] = '';
        words[1] = 'One';
        words[2] = 'Two';
        words[3] = 'Three';
        words[4] = 'Four';
        words[5] = 'Five';
        words[6] = 'Six';
        words[7] = 'Seven';
        words[8] = 'Eight';
        words[9] = 'Nine';
        words[10] = 'Ten';
        words[11] = 'Eleven';
        words[12] = 'Twelve';
        words[13] = 'Thirteen';
        words[14] = 'Fourteen';
        words[15] = 'Fifteen';
        words[16] = 'Sixteen';
        words[17] = 'Seventeen';
        words[18] = 'Eighteen';
        words[19] = 'Nineteen';
        words[20] = 'Twenty';
        words[30] = 'Thirty';
        words[40] = 'Forty';
        words[50] = 'Fifty';
        words[60] = 'Sixty';
        words[70] = 'Seventy';
        words[80] = 'Eighty';
        words[90] = 'Ninety';
        amount = amount.toString();
        var atemp = amount.split(".");
        var number = atemp[0].split(",").join("");
        var n_length = number.length;
        var words_string = "";
        if (n_length <= 9) {
            var n_array = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0);
            var received_n_array = new Array();
            for (var i = 0; i < n_length; i++) {
                received_n_array[i] = number.substr(i, 1);
            }
            for (var i = 9 - n_length, j = 0; i < 9; i++, j++) {
                n_array[i] = received_n_array[j];
            }
            for (var i = 0, j = 1; i < 9; i++, j++) {
                if (i == 0 || i == 2 || i == 4 || i == 7) {
                    if (n_array[i] == 1) {
                        n_array[j] = 10 + parseInt(n_array[j]);
                        n_array[i] = 0;
                    }
                }
            }
            value = "";
            for (var i = 0; i < 9; i++) {
                if (i == 0 || i == 2 || i == 4 || i == 7) {
                    value = n_array[i] * 10;
                } else {
                    value = n_array[i];
                }
                if (value != 0) {
                    words_string += words[value] + " ";
                }
                if ((i == 1 && value != 0) || (i == 0 && value != 0 && n_array[i + 1] == 0)) {
                    words_string += "Crores ";
                }
                if ((i == 3 && value != 0) || (i == 2 && value != 0 && n_array[i + 1] == 0)) {
                    words_string += "Lakhs ";
                }
                if ((i == 5 && value != 0) || (i == 4 && value != 0 && n_array[i + 1] == 0)) {
                    words_string += "Thousand ";
                }
                if (i == 6 && value != 0 && (n_array[i + 1] != 0 && n_array[i + 2] != 0)) {
                    words_string += "Hundred and ";
                } else if (i == 6 && value != 0) {
                    words_string += "Hundred ";
                }
            }
            words_string = words_string.split("  ").join(" ");
        }
        return words_string;
    };
});
例如,要在输入字段中显示插入值:

<input type="text" name="number" placeholder="Number OR Amount" ng-model="myValue" />
<div id="word">{{myValue | convertToWord}}</div>

{{myValue}convertToWord}
我将此用于Angular 8。 输入:123456789.09输出:壹万贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元零玖分

n: string;
a = ['zero ', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
 
 ngOnInit(): void {
        console.log(this.inWords(123456789.09));
 }

inWords (num): string {
    num = Math.floor(num * 100);
    if ((num = num.toString()).length > 11) { return 'overflow'; }
   let n;
   n = ('00000000' + num).substr(-11).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})(\d{1})(\d{1})$/);
        if (!n) { return; } let str = ''; 

     // tslint:disable-next-line:triple-equals
     str += (n[1] != 0) ? (this.a[Number(n[1])] || this.b[n[1][0]] + ' ' + this.a[n[1][1]]) + 'crore ' : '';
     // tslint:disable-next-line:triple-equals
        str += (n[2] != 0) ? (this.a[Number(n[2])] || this.b[n[2][0]] + ' ' + this.a[n[2][1]]) + 'lakh ' : '';
     // tslint:disable-next-line:triple-equals
     str += (n[3] != 0) ? (this.a[Number(n[3])] || this.b[n[3][0]] + ' ' + this.a[n[3][1]]) + 'thousand ' : '';
     // tslint:disable-next-line:triple-equals
     str += (n[4] != 0) ? (this.a[Number(n[4])] || this.b[n[4][0]] + ' ' + this.a[n[4][1]]) : 'hundred';
     // tslint:disable-next-line:triple-equals
     str += (n[5]) ? (this.a[Number(n[5])] || this.b[n[5][0]] + ' ' + this.a[n[5][1]]) : '';
     // tslint:disable-next-line:triple-equals
     str += (n[6]) ?  ((str != '') ? 'point ' : '') + (this.a[Number(n[6])] || this.b[n[6][0]] + ' ' + this.a[n[6][1]]) : '';
     // tslint:disable-next-line:triple-equals
     str += (n[7] != 0) ? (this.a[Number(n[7])] || this.b[n[7][0]] + ' ' + this.a[n[7][1]]) : '';

     return str;
    }

那么,你的问题是什么?需要用angularjs用文字显示金额(数字)。这不是问题,这是要求,你的问题是什么?我建议你定义一个过滤器,并在任何你想要的地方使用这个过滤器。@hadi.mansouri我是angularjs的新手。请发送任何示例代码。
n: string;
a = ['zero ', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
 
 ngOnInit(): void {
        console.log(this.inWords(123456789.09));
 }

inWords (num): string {
    num = Math.floor(num * 100);
    if ((num = num.toString()).length > 11) { return 'overflow'; }
   let n;
   n = ('00000000' + num).substr(-11).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})(\d{1})(\d{1})$/);
        if (!n) { return; } let str = ''; 

     // tslint:disable-next-line:triple-equals
     str += (n[1] != 0) ? (this.a[Number(n[1])] || this.b[n[1][0]] + ' ' + this.a[n[1][1]]) + 'crore ' : '';
     // tslint:disable-next-line:triple-equals
        str += (n[2] != 0) ? (this.a[Number(n[2])] || this.b[n[2][0]] + ' ' + this.a[n[2][1]]) + 'lakh ' : '';
     // tslint:disable-next-line:triple-equals
     str += (n[3] != 0) ? (this.a[Number(n[3])] || this.b[n[3][0]] + ' ' + this.a[n[3][1]]) + 'thousand ' : '';
     // tslint:disable-next-line:triple-equals
     str += (n[4] != 0) ? (this.a[Number(n[4])] || this.b[n[4][0]] + ' ' + this.a[n[4][1]]) : 'hundred';
     // tslint:disable-next-line:triple-equals
     str += (n[5]) ? (this.a[Number(n[5])] || this.b[n[5][0]] + ' ' + this.a[n[5][1]]) : '';
     // tslint:disable-next-line:triple-equals
     str += (n[6]) ?  ((str != '') ? 'point ' : '') + (this.a[Number(n[6])] || this.b[n[6][0]] + ' ' + this.a[n[6][1]]) : '';
     // tslint:disable-next-line:triple-equals
     str += (n[7] != 0) ? (this.a[Number(n[7])] || this.b[n[7][0]] + ' ' + this.a[n[7][1]]) : '';

     return str;
    }