C# arr.contains() 使用正则表达式

问题描述 投票:0回答:1

代码示例

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 成为朋友。

c# regex contains
1个回答
0
投票

如果你想让它使用正则表达式,你可以使用这段代码

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";

© www.soinside.com 2019 - 2024. All rights reserved.