Skip to main content
Participant
September 25, 2019
Answered

How to create a counting number but starting with Zeros

  • September 25, 2019
  • 3 replies
  • 9501 views

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 has been closed for replies.
    Correct answer Tomas Sinkunas

    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;

     

    3 replies

    Participating Frequently
    December 5, 2024

     

    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.

    Tomas Sinkunas
    Tomas SinkunasCorrect answer
    Legend
    September 26, 2019

    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;

     

    Participant
    September 29, 2020

    Hi! Thank's for this! 

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

    Dan Ebberts
    Community Expert
    Community Expert
    September 25, 2019

    Try this:

     

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

     

     

    Dan

    JoseOsccoAuthor
    Participant
    September 27, 2019

    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!

    Tomas Sinkunas
    Legend
    September 27, 2019

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