Ugly but less junk:
private string InsertStrings(string s, int insertEvery, char insert) { char[] ins = s.ToCharArray(); int length = s.Length + (s.Length / insertEvery); if (ins.Length % insertEvery == 0) { length--; } var outs = new char[length]; long di = 0; long si = 0; while (si < s.Length - insertEvery) { Array.Copy(ins, si, outs, di, insertEvery); si += insertEvery; di += insertEvery; outs[di] = insert; di ++; } Array.Copy(ins, si, outs, di, ins.Length - si); return new string(outs); }
Line overload:
private string InsertStrings(string s, int insertEvery, string insert) { char[] ins = s.ToCharArray(); char[] inserts = insert.ToCharArray(); int insertLength = inserts.Length; int length = s.Length + (s.Length / insertEvery) * insert.Length; if (ins.Length % insertEvery == 0) { length -= insert.Length; } var outs = new char[length]; long di = 0; long si = 0; while (si < s.Length - insertEvery) { Array.Copy(ins, si, outs, di, insertEvery); si += insertEvery; di += insertEvery; Array.Copy(inserts, 0, outs, di, insertLength); di += insertLength; } Array.Copy(ins, si, outs, di, ins.Length - si); return new string(outs); }
Johan Larsson Apr 21 '14 at 20:27 2014-04-21 20:27
source share