如何从列表<string>中删除空项目?

时间:2018-08-22 16:36:26

标签: c#

我一直在尝试从列表中删除空项目,这是我的意思:

list1.Add("1")
list1.Add("")
list1.Add("  ")
list1.Add("2")

输出: 1个 2

这是我尝试过的:

List<string> list = new List<string>();
List<string> list1 = new List<string>();
list.Add("1  3");
list.Add("     ");
list.Add("        ");
list.Add("2");
for(int i = 0; i < list.Count(); i++)
{
    MatchCollection mc = Regex.Matches(list[i], @"\s");
    foreach(Match m in mc)
    {
        if (!list.Contains(m.ToString()))
            list1.Add(m.ToString());
    }
}

我是编程新手,所以很抱歉如果这个问题不好

3 个答案:

答案 0 :(得分:8)

list.RemoveAll(string.IsNullOrWhiteSpace);

尽管要小心,IsNullOrWhiteSpace所检查的不仅仅是空格。有关完整列表,请检查https://docs.microsoft.com/en-us/dotnet/api/system.char.iswhitespace?view=netframework-4.7.2

答案 1 :(得分:2)

您不需要正则表达式,可以使用string.IsNullOrWhiteSpace方法。

foreach(var item in list)
{
    if(!string.IsNullOrWhiteSpace(item))
    {
        list1.Add(item);
    }
}

使用LINQ的另一种方法:

var filteredList = list.Where(x => !string.IsNullOrWhiteSpace(x)).ToList();

答案 2 :(得分:0)

您可以使用方法string.IsNullOrWhiteSpace()

        List<string> listWithEmtyAndNullElements = new List<string>
            { "",
              " ",
              "Hi",
              "Stack     ",
              "    Overflow",
                null
            };

        List<string> onlyStringList = new List<string>();

        for (int i = 0; i < listWithEmtyAndNullElements.Count; i++)
        {
            if (!string.IsNullOrWhiteSpace(listWithEmtyAndNullElements[i]))
            {
                onlyStringList.Add(listWithEmtyAndNullElements[i]);
            }
         }