【问题标题】:Getting rid of null/empty string values in a C# array摆脱 C# 数组中的空/空字符串值
【发布时间】:2010-10-12 18:05:38
【问题描述】:

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

不过,有些值是空的。 IE。字符串有部分没有数据,所以它做这样的事情:

1 ;2 ; ; 3;

这导致我的数组有空值。

如何摆脱它们?

【问题讨论】:

  • 您应该编辑您的问题以删除 null 并且仅声明空字符串。 string.Split 不给出空字符串,只给出空字符串。

标签: c# arrays null string


【解决方案1】:

试试这个:

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

【讨论】:

  • 那不编译。您需要使用 new char[]{';'} 作为第一个参数。
  • 需要注意的是,这不会删除仅包含空格的字符串。
  • 无法按预期工作。例如:var a = "1" + "," + "" + "," + "2" + "," + " " + "," + "3" + "," + " " + "," +空 + ","+"4"; . a.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); . Console.WriteLine(a.ToString());将给出 1,,2, ,3, ,,4的结果
【解决方案2】:

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

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

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

【讨论】:

  • 你可以在 Split 和 Where 之间插入一个 .Select(s => s.Trim()) ,这样只有空格的字符串也会被删除。
  • 注意:Split 方法永远不会产生空值。
  • @TamasCzinege 你可以使用 string.IsNullOrWhiteSpaces 代替 trim()
【解决方案3】:
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;
}

【讨论】:

    【解决方案4】:

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

    这会将两个分号替换为一个分号:

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

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

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

    【讨论】:

      【解决方案5】:
                      words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries);
      
                      foreach (string word in words)
                          {   
                              richTextBox1.Text += (d + 1)+ "  " + word.Trim(',')+ "\r\n";
                              d++;
                          }
      

      字符分隔符是一个空格

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-24
        • 2012-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多