public void Delete(int index) { if (index >= Divisions.Count) { return; } var d = Divisions[index]; var offset = d.Offset; var length = d.Length; if (index > 0) { offset--; length++; } else { var endOfDivision = Divisions.Max(e => e.Offset); if (offset < endOfDivision) { length++; } } Replace(offset, length, StringDividerOperations.EmptyChars); }