我想把数字转换成单词.像234中的单词将是2,334.同样,1000将是一千.同样100意味着100.
在angularjs中有没有这个库.如果那么我们将如何在angularjs指令/服务中编写,以便我们可以再次使用它.
创建一个单词过滤器.
我从这篇博文中得到了“toWords”算法:http://ravindersinghdang.blogspot.com/2013/04/convert-numbers-into-words-using.html
var app = angular.module('app',[]); app.filter('words',function() { function isInteger(x) { return x % 1 === 0; } return function(value) { if (value && isInteger(value)) return toWords(value); return value; }; }); var th = ['','thousand','million','billion','trillion']; var dg = ['zero','one','two','three','four','five','six','seven','eight','nine']; var tn = ['ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen']; var tw = ['twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety']; function toWords(s) { s = s.toString(); s = s.replace(/[\,]/g,''); if (s != parseFloat(s)) return 'not a number'; var x = s.indexOf('.'); if (x == -1) x = s.length; if (x > 15) return 'too big'; 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 += 'hundred '; 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 += 'point '; for (var i=x+1; i<y; i++) str += dg[n[i]] +' '; } return str.replace(/\s+/g,' '); } window.toWords = toWords;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.js"></script> <div ng-app="app"> <input type="text" ng-model="name" /> {{name | words}} </div>