Skip to main content
Participant
Sep 25, 2019 10:41 PM UTC
Answered

How to create a counting number but starting with Zeros

Hello

I want to create a counting number with 6 decimals. I want to get the number 934 896, but I want to start with all decimals in zero like this: 000 000.

I wrote this expression:

t = Math.floor(effect("Control del deslizador")("Deslizador"))
t += "";
t.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1 ");

 

But, I start with a single zero.

 

Thanks ofr your help!!

    This topic is closed to new replies. Start a new post to keep the conversation going.
    Tomas Sinkunas
    Tomas SinkunasCorrect answer
    Legend
    Sep 26, 2019 7:30 AM UTC

    Here is a robust way to do what you are looking for. The method of adding extra characters on left or right of the string is called padding. So here's a function that converts your number into a string and pads it to a given length of 6 characters. In case you need more '0' characters at the start, simply change number 6 to some other value.

     

    Cheers.

     

    function padStart(string, targetLength, character) {
    	// Convert 'string' into a string primitive
    	string = (string instanceof String) ? string : string.toString();
    	
    	// floor if number, or convert non-number to 0;
    	targetLength = targetLength >> 0;
    
    	// Assign default padding character
    	character = character || ' ';
    
    	while (string.length < targetLength) {
    		string = character + string;
    	}
    
    	return string;
    };
    
    var slider = thisComp.layer('Null 1').effect('Slider Control')('Slider');
    var paddedString = padStart(slider.value, 6, '0');
    
    paddedString;

     

    7 replies

    Participating Frequently
    Dec 5, 2024 7:19 PM UTC

     

    Using counting tools to create a counting number starting with zeros, you can adapt your code to format the output with leading zeros and proper spacing. Here's the updated version:

     

    t = Math.floor(effect("Control del deslizador")("Deslizador")); t = t.toString().padStart(6, "0"); // Use counting tools to ensure leading zeros t = t.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 "); // Format with spaces every 3 digits
     

    This ensures your counting tool generates numbers like 000 000, 000 001, up to 934 896, with six digits and spaces. The padStart function is essential for maintaining the zero-padding.

    Translate
    Tomas Sinkunas
    Tomas SinkunasCorrect answer
    Legend
    Sep 26, 2019 7:30 AM UTC

    Here is a robust way to do what you are looking for. The method of adding extra characters on left or right of the string is called padding. So here's a function that converts your number into a string and pads it to a given length of 6 characters. In case you need more '0' characters at the start, simply change number 6 to some other value.

     

    Cheers.

     

    function padStart(string, targetLength, character) {
    	// Convert 'string' into a string primitive
    	string = (string instanceof String) ? string : string.toString();
    	
    	// floor if number, or convert non-number to 0;
    	targetLength = targetLength >> 0;
    
    	// Assign default padding character
    	character = character || ' ';
    
    	while (string.length < targetLength) {
    		string = character + string;
    	}
    
    	return string;
    };
    
    var slider = thisComp.layer('Null 1').effect('Slider Control')('Slider');
    var paddedString = padStart(slider.value, 6, '0');
    
    paddedString;

     

    Translate
    Participant
    Sep 29, 2020 11:20 AM UTC

    Hi! Thank's for this! 

    I have a problem with decimals though, I don't want them. How do I get rid of them? 

    Translate
    Dan Ebberts
    Community Expert
    Community Expert
    Sep 25, 2019 11:29 PM UTC

    Try this:

     

    t = Math.floor(effect("Control del deslizador")("Deslizador"));
    n = 6 - t.toString().length;
    "00000".substr(0,n) + t

     

     

    Dan

    Translate
    JoseOsccoAuthor
    Participant
    Sep 27, 2019 5:26 PM UTC

    Hi Dan!

    Your answer really helped me, although I need a space in the middle of the number like this: 000 000

    With your expression I got this: 000000

    I tried to mix your expression with mine, but it didn't work.

    Could you help me with this issue?

     

    Thanks a lot!

    Translate
    Tomas Sinkunas
    Legend
    Sep 27, 2019 6:32 PM UTC

    Here's how you do it: split the string into an array of N size items (chunks) and join the result with a separator. Simply change string, chunkSize and separator variables to your needs.

     

    Given a string 123456789 with a chunkSize of value 3 and a separator as - the result would be 123-456-789

     

    function splitStringIntoChunks(string, chunkSize) {
    	var chunks, pattern;
    
    	// Convert 'string' into a string primitive
    	string = (string instanceof String) ? string : string.toString();
    
    	// Floor the size
    	chunkSize = Math.floor(chunkSize);
    
    	// Build RegExp pattern
    	pattern = new RegExp('.{0,' + chunkSize + '}', 'g');
    
    	// Get array of matches
    	chunks = string.match(pattern);
    
    	return chunks;
    }
    
    var string = 123456789;
    var chunkSize = 3;
    var separator = ' ';
    
    var chunks = splitStringIntoChunks(string, chunkSize);
    var result = chunks.join(separator);
    
    result;

     

     

     

     

     

    Translate