// в теории все ab = "1,1,0,0,1"; к примеру, но могут быть и поврежденные ab = "1,1.56.../екууере";
string[] b = ab.Split(',');
if(b[0] != null){ if(int.Parse(b[0]) != 0 && int.Parse(b[1]) != 1) b[0] = "0"; } else b[0] = "0";
if(b[1] != null){ if(int.Parse(b[1]) != 0 && int.Parse(b[1]) != 1) b[1] = "0"; } else b[1] = "0";
if(b[2] != null){ if(int.Parse(b[2]) != 0 && int.Parse(b[2]) != 1) b[2] = "0"; } else b[2] = "0";
if(b[3] != null){ if(int.Parse(b[3]) != 0 && int.Parse(b[3]) != 1) b[3] = "0"; } else b[3] = "0";
if(b[4] != null){ if(int.Parse(b[4]) != 0 && int.Parse(b[4]) != 1) b[4] = "0"; } else b[4] = "0";
то есть иногда индексов может и не быть, как проверить и создать индекс, чтобы даже есть он был поврежден то на выходе я все равно имел
b[0] = "0";
b[1] = "0";
b[2] = "0";
b[3] = "0";
b[4] = "0";