web-dev-qa-db-fra.com

Se débarrasser des valeurs de chaîne vides/nulles dans un tableau C #

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?

31
zohair

Essaye ça:

yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries);
105
Tamas Czinege

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));
2
sgriffinusa
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;
}
2
Sameer Shaikh

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, "([;][;]+)", ";");
0
Blessed Geek
                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

0
bjoiuzt