As you might know the vbscript replace function does always search only “one round”. Here is an example, what exactly I mean:
Lets assume you want to correct the following string by replacing all “double-l’s” by “single-l’s”:
str = "Littllllle worllllllld!"
The code would be:
wscript.echo replace(str, "ll", "l")
But everything this line does is replace all existing “ll” by “l”. So lets have a look what’s left – the output is: Litllle worlllld!
Why? The original string contained 5 l in Little and 7 l in world. The function used replaces every ll, in Little there are 2 ll and 1 l, in world 3 ll and 1 l. After replacing all doubles you still have 3 l left in Little and 4 in world. As you can see replace only replaces existing strings, the lls that occur by replacing will not be touched… So you need to run a second round to replace more lls by ls…
Since I need this one very often, for example when replacing multiple new lines in html, I wrote a little function doing all the work for me. Here it is: