我一直在尝试从列表中删除空项目,这是我的意思:
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());
}
}
我是编程新手,所以很抱歉如果这个问题不好
答案 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]);
}
}