Лидирующий ноль в однозначных числах (Flash) - PullRequest
3 голосов
/ 20 сентября 2009

Я использую Flash CS3 - AS 3.0.

У меня есть следующий код, который я использую для внешнего подсчета изображений: я не уверен, что вы все знакомы с Slideshow pro (я не думаю, что вам нужно, чтобы помочь мне).

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

Как бы я сделал ведущий ноль, идущий перед числом, которое появляется в этом текстовом поле, если оно равно 9 и меньше?

Надеюсь, мой вопрос не сбивает с толку.

Ответы [ 6 ]

4 голосов
/ 22 мая 2013

Для дальнейшей оптимизации ответа 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 голосов
/ 20 сентября 2009
 function leadingZero(num : Number) : String {
    if(num < 10) {
       return "0" + num;
    }
    return num.toString();
 }
1 голос
/ 28 сентября 2012

Добавление одного нуля к числам ниже десяти - это хорошо, но если вы хотите быть немного более тщательным, это позволит вам добавить любое количество нулей:

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 );

timeText: 03: 08.0042

1 голос
/ 28 ноября 2011

Вот лучший метод, который будет работать, если у вас более одного десятичного знака (например, от 0001 до 0991 и т. Д.)

Шаг 1: создайте переменную-заполнитель с максимальным числом 0

var leadZeroes: String = "000000000";

Шаг 2: превратить ваш номер в строку

var intToString: String = String (myInteger);

Шаг 3: сбрить конец заполнителя в зависимости от количества символов в вашем номере

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

Шаг 4: выведите объединенную строку в текстовое поле (или используйте ее везде)

TxtField.text = строка (leadingZeroes + intToString);

Voila!

0 голосов
/ 02 июля 2014

Вот однострочный способ:

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

хотя я не уверен, что метод join () массива работает быстрее, чем цикл while.

эта тема является дубликатом этой

однако, у этого заголовка есть «ruby», когда мы говорим об as3. я предлагаю сделать этот дубликат этого.

0 голосов
/ 20 сентября 2009

Вы можете использовать NumberUtil Казалиба .

Сайт библиотеки .

Для новичка библиотека предоставляет множество полезных маленьких функций, и это очень хороший учебный материал, когда вы смотрите на ее источник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...