Copy link to clipboard
Copied
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!!
1 Correct answer
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
...
Copy link to clipboard
Copied
Try this:
t = Math.floor(effect("Control del deslizador")("Deslizador"));
n = 6 - t.toString().length;
"00000".substr(0,n) + t
Dan
Copy link to clipboard
Copied
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!
Copy link to clipboard
Copied
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;
Copy link to clipboard
Copied
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;
Copy link to clipboard
Copied
Hi! Thank's for this!
I have a problem with decimals though, I don't want them. How do I get rid of them?
Copy link to clipboard
Copied
Hi Tomas - was hoping you might be able to help me with a similar issue? I am trying to add a 0 just for the counting numbers 1-9 then continue normally. For example 00,01,02,03,04...10,11,12, etc. Any thoughts? Please see my post here: https://community.adobe.com/t5/after-effects-discussions/how-to-create-counting-numbers-keeping-zero...
Copy link to clipboard
Copied
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:
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.

