Ruby-like Question: Make this function shorter (ActionScript 3)

前端 未结 9 1088
春和景丽
春和景丽 2021-01-14 01:38

I just wrote this incredibly verbose code to turn numbers like 2 into 02. Can you make this function shorter, please (maintaning the functionality)?

相关标签:
9条回答
  • 2021-01-14 01:57

    "If anybody wants to post some extremely short equivalent in some other language, that would be fun too."

    In javascript it is easy - paste this into your browser's address bar

    javascript: function zit(n, w) {var z="000000000000000000"; return (z+n).substr(-w);} alert(zit(567, 9)); void(0);

    0 讨论(0)
  • 2021-01-14 02:09

    This wouldn't be the fastest implementation (it does some unnecessary copying and has a loop), but it is nice and readable:

    public static function pad(num:int, minLength:uint):String {
        var str:String = num.toString();
        while (str.length < minLength) str = "0" + str;
        return str;
    }
    
    0 讨论(0)
  • 2021-01-14 02:10

    I don't think there is a built-in way, but this might be cleaner (if not necessarily better performing):

    //20 zeroes, could be more if needed
    public static var Zeroes:String = "00000000000000000000"   
    
    public static function format(n:Number, minimumLength:int):String {
    var retVal:String = (n.toFixed(0)); // cut off the decimals
    var stillNeed:int = minimumLength - retVal.length;
    retVal = Zeroes.substring(0, stillNeed) + retVal; 
    return retVal;
    }
    

    The "zeroes" var eliminates the need for looping, just prepend however many zeroes you need from a prebuilt string.

    0 讨论(0)
提交回复
热议问题