摆脱C#数组中的空/空字符串值

时间:2009-03-11 18:22:09

标签: c# arrays null string

我有一个程序,其中数组使用string.Split(char [] delimiter)获取其数据。 (使用';'作为分隔符。)

但是,有些值为null。即字符串包含没有数据的部分,因此它执行以下操作:

  

1; 2; ; 3;

这导致我的数组具有空值。

我如何摆脱它们?

5 个答案:

答案 0 :(得分:108)

试试这个:

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

答案 1 :(得分:2)

您可以使用Where linq扩展方法仅返回非null或空值。

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

IEnumerable<string> myResults = someString.Split(';').Where<string>(s => !string.IsNullOrEmpty(s));

答案 2 :(得分:2)

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;
}

答案 3 :(得分:0)

在拆分数据之前,您应该用一个分号替换多个相邻的分号。

这将用一个分号替换两个分号:

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

但是,如果你有两个以上的分号,正则表达式会更好。

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

答案 4 :(得分:0)

                words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries);

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

charseparators是一个空间