将数字转换为单词的 Angular 指令/服务(Angularjs 中需要)? [英] Angular directive/service to convert number into words (need in Angularjs)?
问题描述
我想将数字转换为单词.就像单词中的 234 将是 234.同样,1000 将是一千.同样,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() {函数 isInteger(x) {返回 x % 1 === 0;}返回函数(值){if (value && isInteger(value))返回词(值);返回值;};});var th = ['','千','百万','十亿','万亿'];var dg = ['零','一','二','三','四','五','六','七','八','九'];var tn = ['十','十一','十二','十三','十四','十五','十六','十七','十八','十九'];var tw = ['二十','三十','四十','五十','六十','七十','八十','九十'];函数 toWords(s){s = s.toString();s = s.replace(/[\, ]/g,'');if (s != parseFloat(s)) 返回不是数字";var x = s.indexOf('.');如果 (x == -1) x = s.length;如果 (x > 15) 返回太大";var n = s.split('');var str = '';无功 sk = 0;for (var i=0; i
<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"/>{{姓名 |字}}
I want to convert number into words. Like 234 in word would be 2 hundred thirty-four. Similarly 1000 will be one thousand. Similarly 100 means one hundred.
Is there any library for this in angularjs. If then how we will write in angularjs directive/service so that we can use it again..
Create a words filter.
I got the "toWords" algorithm from this blog post: 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>
这篇关于将数字转换为单词的 Angular 指令/服务(Angularjs 中需要)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!