J’ai un programme où un tableau obtient ses données en utilisant ssortingng.Split (délimiteur char []). (en utilisant ‘;’ comme délimiteur.)
Certaines des valeurs, cependant, sont nulles. C’est-à-dire que la chaîne a des parties où il n’y a pas de données, alors elle fait quelque chose comme ça:
1; 2; ; 3;
Cela conduit à mon tableau ayant des valeurs nulles.
Comment puis-je me débarrasser d’eux?
Essaye ça:
yourSsortingng.Split(new ssortingng[] {";"}, SsortingngSplitOptions.RemoveEmptyEnsortinges);
Vous pouvez utiliser la méthode d’extension Where linq pour renvoyer uniquement les valeurs non null ou vides.
ssortingng someSsortingng = "1;2;;3;"; IEnumerable myResults = someSsortingng.Split(';').Where (s => !ssortingng.IsNullOrEmpty(s));
public static ssortingng[] nullLessArray(ssortingng[] src) { Array.Sort(src); Array.Reverse(src); int index = Array.IndexOf(src, null); ssortingng[] outputArray = new ssortingng[index]; for (int counter = 0; counter < index; counter++) { outputArray[counter] = src[counter]; } return outputArray; }
Avant de fractionner les données, vous devez remplacer plusieurs points-virgules adjacents par un point-virgule.
Cela remplacerait deux points-virgules par un point-virgule:
datastr = datastr.replace(";;",";");
Mais, si vous avez plus de deux points-virgules ensemble, regex serait mieux.
datastr = Regex.Replace(datastr, "([;][;]+)", ";");
words = poly[a].Split(charseparators, SsortingngSplitOptions.RemoveEmptyEnsortinges); foreach (ssortingng word in words) { richTextBox1.Text += (d + 1)+ " " + word.Trim(',')+ "\r\n"; d++; }
charseparators est un espace