gpt4 book ai didi

c# - LINQ 搜索/匹配

转载 作者:行者123 更新时间:2023-11-30 13:36:59 24 4
gpt4 key购买 nike

假设我们有一个这样的数组:

 var caps = new[] { "1512x", "001xx", "27058", "201xx", "4756x" };

(原始数组很大,来自另一个 linq 查询)

我需要的是创建一个 LINQ 语句接受一个值并尝试与预见数组中的一个值匹配。

例如,如果我使用“15121”,我需要匹配数组中的“1512x”值并返回它。显然,如果我使用“27058”,它会找到完全匹配并简单地返回它。

在 LINQ 中可以吗?数组中的“通配符”字符是“x”,但我可以更改它。

提前致谢!瓦莱里奥

最佳答案

您可以使用正则表达式:

var value = "15121";
var caps = new[] { "1512x", "001xx", "27058", "201xx", "4756x" };
var match = caps
.FirstOrDefault(c => new Regex("^" + c.Replace("x", "[0-9]") + "$").IsMatch(value));
if (match != null)
Console.WriteLine("{0} matches {1}", value, match);

将“模式”001xx转换为正则表达式^001[0-9][0-9]$等。然后找到第一个匹配的正则表达式。

但如果 caps 很大,它可能不会执行得很好,因为每个正则表达式都必须编译并转换为状态机,直到找到匹配项。

关于c# - LINQ 搜索/匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com