代码之家  ›  专栏  ›  技术社区  ›  lpfavreau Arthur Debert

在Flex/AS3中,你会用什么将数字清零?

  •  10
  • lpfavreau Arthur Debert  · 技术社区  · 16 年前

    this 一个。

    printf NumberFormat

    我正在寻找这个或类似东西的最佳实现:

    public function zeroPad(number:int, width:int):String {
        // number = 46, width = 4 would return "0046"
    }
    
    8 回复  |  直到 8 年前
        1
  •  26
  •   Phil    16 年前
    public function zeroPad(number:int, width:int):String {
       var ret:String = ""+number;
       while( ret.length < width )
           ret="0" + ret;
       return ret;
    }
    
        2
  •  3
  •   Gabor Simon    12 年前

    package {
        public class Helper {
            private static const _ZEROS:String = "0000000000000000000000000000000000000000"; // 40 zeros, shorten/expand as you wish
    
            /*
             * f: positive integer value
             * z: maximum number of leading zeros of the numeric part (sign takes one extra digit)
             */
            public static function uint_Zeropadded(f:uint, z:int = 0):String {
                var result:String = f.toString();
                while (result.length < z)
                    result = _ZEROS.substr(0, z - result.length) + result;
                return result;
            }
        }
    }
    

    与将字符串一个接一个地扩展多次的性能缺陷相比,String常数几乎没有足迹。在大多数情况下(本例中最多40个零),所有调用的指令数量都是相同的。

        3
  •  2
  •   Community CDub    8 年前

    Phil's 作为优雅的变体 recursion :

    public function zeroPad (number:String, width:int):String {
        if (number.length < width)
            return "0" + zeroPad(number, width-1);
        return number;
    }
    

        4
  •  1
  •   Aleksandar Bosancic    13 年前
    public static function getFormatedValue(num:Number, roundDecimalPlace:Number=2, showLastZerosInDecimalPlaces:Boolean = false, decimalSeparator:String=".", thousandsSeparator:String=",", currency:String="$"):String
    {
      //assigns true boolean value to neg in number less than 0
      var neg:Boolean = (num < 0);
    
      //make the number positive for easy conversion
      num = Math.abs(num)
    
      var roundedAmount:String = String(num.toFixed(roundDecimalPlace));
    
      //split string into array for dollars and cents
      var amountArray:Array = roundedAmount.split(".");
      var dollars:String = amountArray[0]
      var cents:String = amountArray[1]
    
      //create dollar amount
      var dollarFinal:String = ""
      var i:int = 0
      for (i; i < dollars.length; i++)
      {
        if (i > 0 && (i % 3 == 0 ))
        {
          dollarFinal = thousandsSeparator + dollarFinal;
        }
    
        dollarFinal = dollars.substr( -i -1, 1) + dollarFinal;
      }       
    
      //create Cents amount and zeros if necessary
      var centsFinal:String;
    
      if(showLastZerosInDecimalPlaces)
      {
        centsFinal = String(cents);
    
        var missingZeros:int = roundDecimalPlace - centsFinal.length;
    
        if (centsFinal.length < roundDecimalPlace)
        {
          for (var j:int = 0; j < missingZeros; j++) 
          {
            centsFinal += "0";
          }
        }
      }
      else
      {
        if(Number(cents) != 0)
        {
          centsFinal = String(String(Number("0."+cents)).split(".")[1]);
        }
        else
        {
          roundDecimalPlace = 0;
        }
      }
    
      var finalString:String = ""
    
      if (neg)
      {
        finalString = "-"+currency + dollarFinal
      } else
      {
        finalString = currency + dollarFinal
      }
    
      if(roundDecimalPlace > 0)
      {
        finalString += decimalSeparator + centsFinal;
      } 
    
      return finalString;
    }
    
        5
  •  1
  •   Bert    12 年前

    零填充例程(AS2)的简短示例。..

        Convert = function(Minutes) {
           return ('00'+String(int(Minutes/60)%24)).substr(-2,2);
        }
    
        6
  •  0
  •   Joeflash    16 年前
    /** 
     * originally by Chris Agiasotis @ http://agitatedobserver.com/as3-currency-formatter/
     * improved by Joseph Balderson @ http://www.joeflash.ca
     */
    package
    {
        public class CurrencyFormat
        {
            public function CurrencyFormat(){ }
    
            public function getCurrency(num:Number,
                        decimalSeparator:String=".",
                        decimalPlace:Number=2,
                        currency:String="$",
                        thousandsSeparator:String=","
                    ):String
            {
                //assigns true boolean value to neg in number less than 0
                var neg:Boolean = (num < 0);
    
                //make the number positive for easy conversion
                num = Math.abs(num)
    
                var roundedAmount:String = String(num.toFixed(decimalPlace));
    
                //split string into array for dollars and cents
                var amountArray:Array = roundedAmount.split(".");
                var dollars:String = amountArray[0]
                var cents:String = amountArray[1]
    
                //create dollar amount
                var dollarFinal:String = ""
                var i:int = 0
                for (i; i < dollars.length; i++)
                {
                    if (i > 0 && (i % 3 == 0 ))
                    {
                        dollarFinal = thousandsSeparator + dollarFinal;
                    }
    
                    dollarFinal = dollars.substr( -i -1, 1) + dollarFinal;
                }   
    
                //create Cents amount and zeros if necessary
                var centsFinal:String = String(cents);
    
                var missingZeros:int = decimalPlace - centsFinal.length;
    
                if (centsFinal.length < decimalPlace)
                {
                    for (var j:int = 0; j < missingZeros; j++) 
                    {
                        centsFinal += "0";
                    }
                }
    
                var finalString:String = ""
    
                if (neg)
                {
                    finalString = "-"+currency + dollarFinal
                } else
                {
                    finalString = currency + dollarFinal
                }
    
                if(decimalPlace > 0)
                {
                    finalString += decimalSeparator + centsFinal;
                } 
    
                return finalString;
            }
        }
    }
    
        7
  •  0
  •   lpfavreau Arthur Debert    15 年前

    不幸的是,堆栈溢出不允许我发布链接,但如果谷歌代码的项目名称是printf-as3

    http://code.google.com/p/printf-as3/

        8
  •  0
  •   phailwhale22    12 年前

    public function zeroPad(s:String,pad:int):String {
        for(;s.length<pad;s='0'+s);
        return s;
    }
    
    推荐文章