如何比较不精确的字符串值

How to compare inexact string values

我想比较两个不精确的 string 值例如我想比较 AdminAdministrator,这应该 return true 或应该执行。 我试过 contain 没用

 var prodcut = lstProducts.Where(i => i.Name.ToLower().Contains(appname.ToLower())).FirstOrDefault();

如果 i.Name 是 'Admin' 并且 appname.ToLower() 是 'Administrator',则以上代码不起作用。它只是 return null 但希望它应该检测值。

你把字符串搞错了(你在 Admin 中寻找 Adminstrator

您可以像这样双向检查:

 lstProducts.Where(i => 
     i.Name.ToLower().Contains(appname.ToLower()) ||
     appname.ToLower().Contains(i.Name.ToLower())
 ).FirstOrDefault();

或者只比较前几个字符:

lstProducts.Where(i => 
    i.Name.ToLower().SubString(0,5) == appname.ToLower().SubString(0,5))
).FirstOrDefault();

Fuzzy matching 实际上是一个相当复杂的主题,但是对这个主题有很多研究。

如果您想双向检查,如果 A 包含 B 或者如果 B 包含 A,您可以像这样使用 || operatorOR 运算符):

a.Contains(b) || b.Contains(a)