加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular指令/服务将数字转换为单词(Angularjs中需要)?

发布时间:2020-12-17 07:52:50 所属栏目:安全 来源:网络整理
导读:我想把数字转换成单词.像234中的单词将是2,334.同样,1000将是一千.同样100意味着100. 在angularjs中有没有这个库.如果那么我们将如何在angularjs指令/服务中编写,以便我们可以再次使用它. 创建一个单词过滤器. 我从这篇博文中得到了“toWords”算法:http://
我想把数字转换成单词.像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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读