J'ai un programme où un tableau obtient ses données en utilisant string.Split (délimiteur char []) . (En utilisant ';' comme délimiteur.)
Certaines des valeurs, cependant, sont nulles. C'est à dire. la chaîne a des parties où il n'y a pas de données, donc 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:
yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries);
Vous pouvez utiliser la méthode d'extension Where linq pour renvoyer uniquement les valeurs non null ou vides.
string someString = "1;2;;3;";
IEnumerable<string> myResults = someString.Split(';').Where<string>(s => !string.IsNullOrEmpty(s));
public static string[] nullLessArray(string[] src)
{
Array.Sort(src);
Array.Reverse(src);
int index = Array.IndexOf(src, null);
string[] outputArray = new string[index];
for (int counter = 0; counter < index; counter++)
{
outputArray[counter] = src[counter];
}
return outputArray;
}
Vous devez remplacer plusieurs points-virgules adjacents par un point-virgule avant de fractionner les données.
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, StringSplitOptions.RemoveEmptyEntries);
foreach (string Word in words)
{
richTextBox1.Text += (d + 1)+ " " + Word.Trim(',')+ "\r\n";
d++;
}
charseparators est un espace