# Insert glyphs into a string using functional code

I asked this question few days ago: Replace For-loop with functional code

Suppose I use strings instead of lists; for example

a = ToString /@ {123123, 112233};


I want to insert first end of "4" to every possible position of given string. For elements in a , this give me

b = {4123123, 1423123, 1243123, 1234123, 1231423, 1231243, 1231234,
4112233, 1412233, 1142233, 112433, 112343, 1122334}


Now I Insert second end of "4" to given elements starting at first occurrence of "4". So, I get,

c = {
44123123, 41423123, 41243123, 41234123, 41231423, 41231243, 41231234,
14423123, 14243123, 14234123, 14231423, 14231243, 14231234,
12443123, 12434123, 12431423, 12431243, 12431234, 12344123, ...
}


Is there a method to insert elements into a string without splitting the string into a list of characters, (as done in Mr.Wisard's answer for the same question involving lists. See above link).

This is what I came up with:

a = ToString /@ {123123, 112233};

Clear[f];
f[x_] := StringInsert[a, "4", x];
len = StringLength[
a[[1]]];(*Every string in set "a" has same length*)
b = Flatten[Map[f, Range[len + 1]], 1];

Clear[pos];
pos[x_] := Flatten[StringPosition[x, "4"], 1][[1]];
c = Map[pos, b];

result = {};
Do[Clear[g];
g[x_] := StringInsert[b[[i]], "4", x];
AppendTo[result, Map[g, Range[c[[i]] + 1, 8]]];, {i, 1, Length[b]}

];

Flatten[result] ];


Anny comment to improve this really appreciated.

-

Similarly to ReplaceList in the last question you can use StringReplaceList here:
StringReplaceList["1234",
`