10 Stimmen

Was würden Sie verwenden, um eine Zahl in Flex/AS3 mit Nullen aufzufüllen?

Duplikat von este ein.

Womit würden Sie in Flex/AS3 Nullen links von einer Zahl auffüllen?

Gibt es ein Äquivalent zu printf o NumberFormat das dies tut?

Ich bin auf der Suche nach einer möglichst guten Umsetzung dieser oder einer ähnlichen Lösung:

public function zeroPad(number:int, width:int):String {
    // number = 46, width = 4 would return "0046"
}

1 Stimmen

Es handelt sich in der Tat um ein Duplikat, obwohl ich es mit der Suchmaschine nie gefunden habe, weil es nicht von Nullen, Auffüllungen und Zahlenformatierungen spricht und die Formulierung Ruby-like im Titel hat.

0 Stimmen

Ja, das ist sehr bedauerlich. Ich hoffe, Ihr Problem ist jetzt gelöst.

0 Stimmen

Es war in der Tat das, wonach ich gesucht hatte. Nun, zunächst nach einer eingebauten Funktion und der besten Implementierung, wenn es keine eingebaute Funktion gibt. Danke für den Link.

0voto

Arthur Debert Punkte 9426

Ich pflege ein printf in AS3: Leider lässt mich Stack Overflow keine Links posten, aber wenn der Projektname des Google-Codes printf-as3 lautet

Feedback ist immer willkommen.

--

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

0voto

Joeflash Punkte 76
/** 
 * 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;
        }
    }
}

0voto

phailwhale22 Punkte 46

Eine sehr kompakte Lösung:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X