C# 从列表中删除包含特定文本的元素
我有一个C#方法,我在一个元素格式为C# 从列表中删除包含特定文本的元素,c#,visual-studio-2012,arraylist,C#,Visual Studio 2012,Arraylist,我有一个C#方法,我在一个元素格式为username+datetime的列表中查找某些文本,比如username,如果文本的任何部分与列表中的元素匹配,则必须从列表中删除整个元素 添加到c#列表中的方法 string active_user = model.UserName.ToString(); string datetime = "(" + DateTime.Now + ")"; List<string> activeUsers = new List<string>(
username+datetime
的列表中查找某些文本,比如username
,如果文本的任何部分与列表中的元素匹配,则必须从列表中删除整个元素
添加到c#列表中的方法
string active_user = model.UserName.ToString();
string datetime = "(" + DateTime.Now + ")";
List<string> activeUsers = new List<string>();
if (activeUsers.Any(str => str.Contains(active_user)))
{
//do nothing
}
else
{
activeUsers.Add(active_user+datetime);
}
如果您只想删除第一个匹配项,请执行以下操作:
var users = activeUsers.Where(au => au.Contains(active_user);
foreach(var user in users)
activeUsers.Remove(user);
或者更简单地说,Eric回答的RemoveAll方法。您可以执行以下操作
if (activeUsers.Contains(active_user))
{
activeUsers.Remove(active_user);
}
activeUsers.RemoveAll(u => u.Contains(active_user));
这将匹配并删除activeUser
中包含active\u user
中文本的所有元素。当其他答案正确时,您应该注意,它们将删除所有匹配项。例如,active\u user=“John”
将删除“John”、“John123”、“OtherJohn”等
您可以使用正则表达式进行测试,或者如果用户名没有括号,请按如下方式进行测试:
string comp = active_user + "("; // The ( is the start of the date part
activeUsers.RemoveAll(u => u.StartsWith(comp));
另外请注意,这是区分大小写的。如果要从列表中删除数字字符串值列表项
List<ModelName> ModelList = new List<ModelName>();
var regex = new Regex(@"\d");
foreach(var item in ModelList.ToList())
{
if (regex.IsMatch(item.PropertyName))
{
ModelList.RemoveAll(t => t.PropertyName== item.PropertyName);//Or
ModelList.RemoveAll(t => t.PropertyName.Contains(item.PropertyName));//Or You Can Use Contains Method
}
}
return ModelList;
List ModelList=new List();
var regex=new regex(@“\d”);
foreach(ModelList.ToList()中的var项)
{
if(regex.IsMatch(item.PropertyName))
{
ModelList.RemoveAll(t=>t.PropertyName==item.PropertyName);//或
ModelList.RemoveAll(t=>t.PropertyName.Contains(item.PropertyName));//或者您可以使用Contains方法
}
}
返回模型列表;
这将从列表中删除所有以数字值作为字符串的项目,并仅返回列表项目中的字符串对于我的使用来说似乎很完美如果我想检查更多条件怎么办?@Si8只需使用&&<代码>activeUsers.RemoveAll(u=>u.StartsWith(comp)&&somethingelse&&somethingels2)代码>谢谢。我把我的问题贴在这里,如果你愿意帮忙,请。。。
List<ModelName> ModelList = new List<ModelName>();
var regex = new Regex(@"\d");
foreach(var item in ModelList.ToList())
{
if (regex.IsMatch(item.PropertyName))
{
ModelList.RemoveAll(t => t.PropertyName== item.PropertyName);//Or
ModelList.RemoveAll(t => t.PropertyName.Contains(item.PropertyName));//Or You Can Use Contains Method
}
}
return ModelList;