使用 Linq 和 Regex 比较 2 个字符串数组以进行部分匹配

Posted

技术标签:

【中文标题】使用 Linq 和 Regex 比较 2 个字符串数组以进行部分匹配【英文标题】:Comparing 2 string arrays using Linq and Regex for a partial match 【发布时间】:2021-08-26 18:55:28 【问题描述】:

我有一个搜索词数组和需要搜索的第二个数组,返回真或假取决于第二个数组中的任何字符串是否包含第一个数组中的文本。我尝试使用 linq,但如果第二个数组中的任何值包含的不仅仅是那些搜索词,我就无法让它返回 true。我正在考虑将 Regex 与 linq 查询结合使用,但我不确定它是如何工作的。这是我尝试过的

string[] gsdSearchVerbiage =
  
    "grade", 
     "transcript",
     "gsd"
  ;

  string[] tableColumns = new string []
  
    "maxsgrades",
     "somethingElse",
   ;

bool gsdFound = tableColumns.Any(
   x => gsdSearchVerbiage.Contains(x));

这返回错误。我明白为什么它返回错误,但我不知道如何解决它。如果答案是使用正则表达式,我不知道如何在 2 个数组上做到这一点......

【问题讨论】:

那么是否会搜索 tableColumns 是否包含 gsdSearchVerbiage 中的任何单词?这应该不区分大小写吗?目前我猜这应该返回 true,因为 'maxsgrades' 包含单词 'grade'。 【参考方案1】:

最后一条语句应该是

bool gsdFound = tableColumns.Any(
    x => gsdSearchVerbiage.Any(y => x.Contains(y)));

因为您想知道 tableColumns (x) 的当前项目是否包含任何 gsdSearchVerbiage 单词 (y)

【讨论】:

以上是关于使用 Linq 和 Regex 比较 2 个字符串数组以进行部分匹配的主要内容,如果未能解决你的问题,请参考以下文章

RegEx 用于比较具有特殊字符的两个字符串

使用LINQ按字母顺序比较字符串

使用正则表达式的 Linq 选择

Regex-创建验证以强制一个字符串包含2个以上的单词

Linq中比较字符串类型的日期

regex正则表达式学习