【问题标题】:Leading Zero on Single Digits (Flash)一位数前导零 (Flash)
【发布时间】:2009-09-20 07:28:03
【问题描述】:

我正在使用 Flash CS3 - AS 3.0。

我有以下代码用于将图像计数为外部:我不确定你们是否都熟悉 Slideshow pro(我认为您不需要为了帮助我)。

function albumStuff(event:SSPDataEvent) {
     if (event.type=="albumData") {
     total1.text =  event.data.totalImages;
     }
}

如果文本字段中出现的数字是 9 或以下,我如何让前导零出现在该数字的前面?

我希望我的问题不会令人困惑。

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:
     function leadingZero(num : Number) : String {
        if(num < 10) {
           return "0" + num;
        }
        return num.toString();
     }
    

    【讨论】:

    • 谢谢,但我如何将其合并到我目前拥有的代码中:/ 我刚开始做 3.0,因为我必须为这个客户做这件事
    • total1.text =leadingZero(Number(event.data.totalImages));
    • 我非常不喜欢这个答案。如果 num 是 -10 怎么办?那是“小于 10”,并且会附加一个零......
    【解决方案2】:

    进一步优化 Seanonymous 的回答:

    function addLeadingZero(val:Number, places:uint):String
    {
        var result:String = val.toString();
        for(var i:int = result.length; i < places; i++)
        {
            result = '0' + result;
        }
        return result;
    }
    

    只有在迭代数百个字符串/数字时才会注意到速度。

    【讨论】:

      【解决方案3】:

      如果您有多个小数位(例如 0001 到 0991 等),这是一种更好的方法

      第 1 步:创建一个占位符变量,其中包含最大数量的 0

      varleadingZeroes:String="000000000";

      第 2 步:把你的号码变成一个字符串

      var intToString:String=String(myInteger);

      第 3 步:根据号码中的字符数刮掉占位符的末尾

      leadingZeroes=leadingZeroes.substr(0,leadingZeroes.length-intToString.length);

      第 4 步:将连接的字符串打印到您的文本字段(或在任何地方使用)

      TxtField.text=String(leadingZeroes+intToString);

      瞧!

      【讨论】:

        【解决方案4】:

        给小于 10 的数字加一个零很好,但如果你想更彻底一点,这将允许你添加任意数量的零:

        function alz( value:uint, places:Number ):String { //Add Leading Zeros
            var result:String = value.toString();
            while ( result.length < places ) {
                result = '0' + result;
            }
            return result;
        }
        

        然后您可以对不同数量的前导零使用相同的函数:

        var timeText:String = alz( minutes, 2) + ":" + 
                                alz( seconds, 2 ) + "." + 
                                alz( milliseconds, 4 );
        

        时间文本:03:08.0042

        【讨论】:

          【解决方案5】:

          您可以使用Casalib's NumberUtil

          The library's website.

          对于新手来说,这个库提供了很多有用的小功能,看源码是一个很好的学习资料。

          【讨论】:

            【解决方案6】:

            这是一种单行方式:

            private function leadingZeros(value:int, numDigits:int):String
            {
                return String(new Array(numDigits + 1).join("0") + String(value)).substr(-numDigits, numDigits);
            }
            

            不过,我不确定 Array 的 join() 方法是否比 while 循环快。

            此线程与this 重复

            但是,当我们谈论 as3 时,那个人的标题中包含“ruby”。我建议把那个复制成这个。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-12-29
              • 2011-08-31
              • 1970-01-01
              • 1970-01-01
              • 2019-07-05
              • 2019-01-25
              • 2016-07-26
              • 2011-11-14
              相关资源
              最近更新 更多