Convert digits into words with JavaScript

后端 未结 27 1457
我寻月下人不归
我寻月下人不归 2020-11-22 15:08

I am making a code which converts the given amount into words, heres is what I have got after googling. But I think its a little lengthy code to achieve a simple task. Two R

27条回答
  •  独厮守ぢ
    2020-11-22 15:53

    I modified @McShaman's code, converted it to CoffeeScript, and added docs via JSNice. Here's the result, for those interested (English):

    ###
        Convert an integer to an English string equivalent
        @param {Integer} number the integer to be converted
        @return {String} the English number equivalent
    ###
    inWords = (number) ->
        ###
            @property {Array}
        ###
        englishIntegers = [
            ""
            "one "
            "two "
            "three "
            "four "
            "five "
            "six "
            "seven "
            "eight "
            "nine "
            "ten "
            "eleven "
            "twelve "
            "thirteen "
            "fourteen "
            "fifteen "
            "sixteen "
            "seventeen "
            "eighteen "
            "nineteen "
        ]
    
        ###
            @property {Array}
        ###
        englishIntegerTens = [
            ""
            ""
            "twenty"
            "thirty"
            "forty"
            "fifty"
            "sixty"
            "seventy"
            "eighty"
            "ninety"
        ]
    
        ###
            @property {Array}
        ###
        englishIntegerThousands = [
            "thousand"
            "million"
            ""
        ]
        number = number.toString()
        return "" if number.length > 9
    
        ###
            @property {string}
        ###
        number = ("000000000" + number).substr(-9)
    
        ###
          @property {(Array.|null)}
          ###
        number = number.match(/.{3}/g)
    
        ###
            @property {string}
        ###
        convertedWords = ""
    
        ###
            @property {number}
        ###
        i = 0
        while i < englishIntegerThousands.length
    
            ###
                @property {string}
            ###
            currentNumber = number[i]
    
            ###
                @property {string}
            ###
            tempResult = ""
            tempResult += (if convertedWords isnt "" then " " + englishIntegerThousands[i] + " " else "")
            tempResult += (if currentNumber[0] isnt 0 then englishIntegers[Number(currentNumber[0])] + "hundred " else "")
    
            ###
                @property {string}
            ###
            currentNumber = currentNumber.substr(1)
            tempResult += (if currentNumber isnt 0 then ((if tempResult isnt "" then "and " else "")) + (englishIntegers[Number(currentNumber)] or englishIntegerTens[currentNumber[0]] + " " + englishIntegers[currentNumber[1]]) else "")
            convertedWords += tempResult
            i++
        convertedWords
    

提交回复
热议问题