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

au9on6nz  于 2023-05-19  发布在  C#
关注(0)|答案(2)|浏览(164)

代码示例

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]$,对吗?^ -行的开始。$ -行结束。但我不知道如何使。包含和正则表达式的朋友。

iq3niunx

iq3niunx1#

系统。Linq太棒了。在我的例子中,你可以不用正则表达式

string[] black_list = { "Music", "Voice", "Animal" };    
arr = arr.Except(black_list).ToArray();
2w2cym1i

2w2cym1i2#

如果你希望它是useRegex(列表中的第一个或最后一个),你可以使用下面的代码

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();

如果你想让它等于列表,就使用下面的代码

arr = arr.Where(r => !black_list.Any(d =>
 r.ToLower().Equals(d.ToLower()))).ToArray();

相关问题