2016-01-07 18 views
5

मैं संख्या को शब्दों में परिवर्तित करना चाहता हूं। शब्द में 234 की तरह 2 सौ चौबीस होगी। इसी प्रकार 1000 एक हजार होगा। इसी तरह 100 का मतलब एक सौ है।संख्याओं को शब्दों में बदलने के लिए कोणीय निर्देश/सेवा (Angularjs में आवश्यकता है)?

क्या कोणीय में इसके लिए कोई पुस्तकालय है। यदि फिर हम angularjs निर्देश/सेवा में कैसे लिखेंगे ताकि हम इसे फिर से उपयोग कर सकें ..

+3

http://stackoverflow.com/questions/14766951/convert-digits- इन-शब्द-साथ-जावास्क्रिप्ट – lee

उत्तर

16

एक शब्द फ़िल्टर बनाएं।

enter image description here

मैं इस ब्लॉग पोस्ट से "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>

+0

किसी भी कारण से आपने 'window.toWords = toWords; 'फ़ंक्शन' toWords()' और फ़िल्टर के भीतर चर शामिल करने के बजाय? – Justin

+0

संसाधन के लिए धन्यवाद, बहुत उपयोगी –

+0

क्या यह कोणीय 2 के साथ संभव है? – NunnaS

संबंधित मुद्दे