Избавление от нулевых / пустых строковых значений в массиве C # - PullRequest
34 голосов
/ 11 марта 2009

У меня есть программа, где массив получает свои данные, используя string.Split (char [] delimiter). (используя ';' в качестве разделителя.)

Некоторые значения, однако, являются нулевыми. То есть строка содержит части, в которых нет данных, поэтому она делает что-то вроде этого:

1; 2; ; 3;

Это приводит к тому, что мой массив имеет нулевые значения.

Как мне от них избавиться?

Ответы [ 5 ]

109 голосов
/ 11 марта 2009

Попробуйте это:

yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries);
2 голосов
/ 01 июля 2012
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 голосов
/ 11 марта 2009

Вы можете использовать метод расширения Where linq только для возврата ненулевых или пустых значений.

string someString = "1;2;;3;";

IEnumerable<string> myResults = someString.Split(';').Where<string>(s => !string.IsNullOrEmpty(s));
0 голосов
/ 08 июля 2016
                words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries);

                foreach (string word in words)
                    {   
                        richTextBox1.Text += (d + 1)+ "  " + word.Trim(',')+ "\r\n";
                        d++;
                    }

charseparators - это пробел

0 голосов
/ 22 ноября 2009

Перед разделением данных следует заменить несколько соседних точек с запятой на одну точку с запятой.

Это заменит две точки с запятой на одну точку с запятой:

datastr = datastr.replace(";;",";");

Но, если у вас больше двух точек с запятой, регулярное выражение будет лучше.

datastr = Regex.Replace(datastr, "([;][;]+)", ";");
...