代码示例
string[] black_list = { "Music", "Voice", "Animal" };
for (byte i = 0; i < black_list.Length; i++)
{
//string pattern = $@"^{Convert.ToString(black_list[i])}$";
arr = arr.Where(line => !line.Contains(Convert.ToString(black_list[i])).ToArray();
}
它从“arr”数组中删除“black_list”数组中的任何匹配项。但不是完全匹配。例如,如果arr数组中的字符串之一是“Music video”——一个字符串,那么这个字符串也会被删除。我需要严格删除“音乐”而不是“音乐视频”。在正则表达式中它应该是这样的 ^black_list[i]$ 对吗? ^ - 行首。 $ - 行尾。但我不知道如何让 .Contains 和 Regex 成为朋友。
如果你想让它使用正则表达式,你可以使用这段代码
arr = arr.Where(r =>
!black_list.Any(d =>
Regex.Match(r, d + @"$", RegexOptions.IgnoreCase).Success
|| Regex.Match(r, @"^" + d , RegexOptions.IgnoreCase).Success)).ToArray();
如果您希望它成为列表中的第一个或最后一个,请使用此代码
arr = arr.Where(r =>
!black_list.Any(d =>
r.ToLower().StartsWith(d.ToLower()) || r.ToLower().EndsWith(d.ToLower()))).ToArray();
结果:
价值 |
---|
爸爸 |
afdfd |
dfsf 动物屁股 |
示例数据:
string[] black_list = { "Music", "Voice", "Animal" };
string[] arr = new string[7];
arr[0] = "Music aas";
arr[1] = "dads";
arr[2] = "Animal";
arr[3] = "afdfd";
arr[4] = "Animal_aaa";
arr[5] = "asss Animal";
arr[6] = "dfsf Animal ass";