Welcome Dialog

Welcome to the Community!

We have a brand new look! Take a tour with us and explore the latest updates on Adobe Support Community.


trying .repeat for string

Explorer ,
Mar 18, 2021 Mar 18, 2021

Copy link to clipboard

Copied

For some reason my .repeat isnt working for a text string.

 

If i wanted five 0's

I wanted '0'.repeat(5);

not working. 

any help is appreciated.

 

TOPICS
Scripting

Views

161

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Adobe Community Professional , Mar 19, 2021 Mar 19, 2021
It would be best if you rewrote that repeat function as a separate method, so you could simply use this:  sName = sName + repeatString('0', zeroAmount);. This way you don't have to use a nested for loop, like you have it right now.   And the repeatString function would look like this: function repeatString(string, times) { var result = ''; for (var i = 0; i < times; i++) { result += string; } return result; }

Likes

Translate

Translate
Adobe Community Professional ,
Mar 18, 2021 Mar 18, 2021

Copy link to clipboard

Copied

In what context are you using this method? C++, Expression, CEP extension, or ExtendScript?

If it's ExtendScript, then this method will not work, since ExtendScript uses very old JavaScript version (ECMA version 3.0) that does not have this method. You'll have to use the for loop to concatinate strings to achive what you are afterr.

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Mar 18, 2021 Mar 18, 2021

Copy link to clipboard

Copied

Thank you. Yes. Extendscript. This makes sense. I'll jump in and give it a shot. 

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Mar 19, 2021 Mar 19, 2021

Copy link to clipboard

Copied

mName = "My_Diffuse_[00000-00030].png" //establish name

numSlice = mName.lastIndexOf("["); //get number index
numSlice2 = mName.lastIndexOf("-"); //get number index
zeroAmount = numSlice2-numSlice; // calculate amount of characters needed

sName = mName.slice(0, numSlice); //slice mName based on numSlice. I remove the "[00000-00030].png"

//this for loop i wat to add the proper amount of 0's at the end of the sliced file name
for (i = 1; i < zeroAmount; i++){
    sName.concat("0");
}
  
//show me result.
alert(sName);

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Mar 19, 2021 Mar 19, 2021

Copy link to clipboard

Copied

Above is my latest. I think im doing things right, its just not working.

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Community Professional ,
Mar 19, 2021 Mar 19, 2021

Copy link to clipboard

Copied

Your for loop is incorrect. Try this instead:

for (i = 1; i < zeroAmount; i++){
  sName += "0";
}

 

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Mar 19, 2021 Mar 19, 2021

Copy link to clipboard

Copied

thank you. That did it.
Minor thing that i worked around is now this for loop breaks the for loop
it was embedded in.
Ill try to solve that but if i added multiple if statements it
didnt break the loop. weird

--
Regards,
Thomas Maloney

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Community Professional ,
Mar 19, 2021 Mar 19, 2021

Copy link to clipboard

Copied

LATEST

It would be best if you rewrote that repeat function as a separate method, so you could simply use this: 

sName = sName + repeatString('0', zeroAmount);. This way you don't have to use a nested for loop, like you have it right now.
 
And the repeatString function would look like this:
function repeatString(string, times) {
	var result = '';
    for (var i = 0; i < times; i++) {
        result += string;
    }

    return result;
}

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Community Professional ,
Mar 18, 2021 Mar 18, 2021

Copy link to clipboard

Copied

A @Tomas Sinkunas says.

Here you find a polyfill:

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String/repeat

You can copy and paste the code of the polyfill in your program and it will add the missing repeat method.

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines